1、第二章 运算基础,2.1 进位计数制 2.2 数制之间的转换 2.3 二进制编码 2.4 带符号数的机内表示 2.5 二进制运算,2.1 进位计数制,按 进 位的方法进行计数,称为进位计数制. (细节,略),2.2 数制之间的转换,二进制与十进制之间的转换二进制与十六进制之间的转换十六进制与十进制之间的转换,2.3 二进制编码,二进制编码的十进制数(BCD,Binary Coded Decimal)字符编码,BCD码,字符编码,ASCII码 国标码(区位码、异形国标码) Unicode 编码(UCS2),ASCII码表,112,128,144,160,176,192,208,224,240,十
2、进制,十六 进制,空格,n,2,BLANK,中华人民共和国国家标准 信息交换用汉字编码字符集(基本集) GB 2312-80,双字节表示,分为区码和位码 包括202个一般符号,60个序号,22个数字,52个拉丁字母,169个日文假名,48个希腊字母,56个俄文字母,26个汉语拼音符号;37个汉语注音字母,6763个汉字 6763个汉字分为两级。第一级汉字3755个按汉语拼音顺序排列;第二级汉字3008个按笔画顺序排列,GB 2312-80(一般符号),GB 2312-80(汉字),区位码、国标码与机内码,以汉字“爱”为例: 区位码:1614 国标码:100E 异形国标码:B0AE(=国标码+A
3、0A0),Unicode,Unicode 是一个16位的字符集,它包括了几乎所有常见的信息交换用的字符(英、法、德、中(简、繁)、朝鲜、日等),其64K的编码空间有大约1/3尚未分配。 “A” 的 Unicode 是4100 “爱”的 Unicode 是3172 “愛”的 Unicode 是1B61,2.4 带符号数的机内表示,机器数与真值 原码表示法 反码表示法 补码表示法 过余码表示法,机器数与真值,计算机在处理实际问题时遇到的带符数,数据的“+”号和“-”号在计算机内也是用二进制位表示, “0”表示正, “1”表示负。 例如: N1=+1011011 N2=-1011011 机内表示:N
4、1=01011011 N2=11011011 定义:将已经数值化了的带符号数称为机器数,而把原来的数称为机器数的真值。,原码表示法,数据的最高位用来表示符号,称为符号位,符号位为0表示正数,符号位为1表示负数,其余位为数值位,用数据的绝对值表示。举例:(1) X=+85, X原=01010101(2) X=-85, X原=11010101(3)对于零: 0有两种表示形式+0原=00000000 -0原=10000000,反码表示法,在反码表示中,仍用0表示正数,1表示负数。对于正数,其反码表示与其原码表示完全相同;对于负数,符号位为1,其余用数值的反码表示。举例:(1) X=+85, X反=0
5、1010101(2) X=-85, X反=10101010(3)对于零: 0有两种表示形式+0反=00000000 -0反=11111111,补码表示法,在补码表示中,仍用0表示正数,1表示负数。对于正数,其补码表示与其原码表示完全相同;对于负数,符号位为1,其余各位按位取反加1。 举例:(1) X=+85, X补=01010101(2) X=-85, X补=10101011(3)对于零: 0只有一种表示形式0补=00000000,过余码表示法,在过余码表示中,是将数据的真值直接 与一个过余量相加,结果就是其过余码表示。过余量通常为64、128、1024等。 举例:(1) X=+85, X过余
6、128=128+85=11010101 (2) X=-85, X过余128=128-85=00101011 (3)对于零: 只有一种表示形式0过余128=128+0=10000000,2.5 二进制运算,补码加减运算逻辑运算,两个正数相加:45 00101101(45的补码)+ 22 +00010110(22的补码)67 01000011(67的补码),2.5 二进制运算(补码加减),两个负数相加:(-45) 11010011(-45的补码)(-22)+11101010(-22的补码)(-67) 10111101(-67的补码),结论:用补码表示的数据进行加减运算时可以不考虑符号位,直接运算,即与不带符号的数据的运算完全相同。该结论是否完全正确呢?请看下面的例子:,2.5 二进制运算(补码加减),两个正数相加:126 01111110(126的补码)+ 4 +00000100(4的补码)130 10000010(-126的补码) 为什么会出现错误的结果呢?溢出,2.5 二进制运算 (溢出),运算结果超出了目标所能容纳的范围, 称发生了溢出。 例如:8位所能表示的补码数据的范围是: -128+127。 同号相加,异号相减时才可能发生溢出。,2.5 二进制运算 (逻辑运算),与运算或运算异或运算非运算,