1、 码制 原码、反码与补码,第三讲 计算机中的数制和码制,一、机器数与真值(1),真值: 实际的数值(包括正负号)叫做真值。 如:+35,-1001110B,-100101B,一、机器数与真值(2),机器数: 机器数:数在计算机中的表示; 在计算机中,数只能用二进制表示,符号也用二进制数位表示; 是存放在寄存器或储存单元中的。 例如:10000111,11001001,01100011,二、无符号数与有符号数,无符号数: 全部二进制均代表数值,没有符号位。 有符号数: 用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余数位用作数值位,代表数值。 如: +35 化为有符号机器数,+35,
2、+100011B,0100011,转换为 二进制,化成有符号数,(00100011),(0000000000100011),8位,16位,三、有符号数的表示,原码 反码 补码,1、原码,真值用二进制表示后,数的数值部分不变,在符号位上用“0”和“1”分别表示数的符号“+”和“-”。 X的原码一般表示为 X原 如:,+1001001,-1100100,01001001,11100100,x,x原,2、反码,正数的反码:与原码相同; 负数的反码:符号位为“1”,数值位按位取反。 X的反码一般表示为 X反 如:,3、补码,引入补码的目的 引入的思路 补码的求法 补码的作用与效果 几点说明 溢出,补码
3、 引入补码的目的,将加、减运算简化为单纯的相加运算,以便于在计算机中实现各种运算。,补码 引入的思路(1),由钟表拨表针的方法得到启示; 例如:把表上的8点钟改为6点钟,方法二: 顺时针拨10格,方法一: 反时针拨2格,补码 引入的思路(2),拨针方法小结:8 - 2 = 68 + 10 = 6 思考:为什么会出现这种现象?计算机中是否也有这种现象?(表盘是圆的,可循环计时。),补码 引入的思路(3),计算机储存一个数也有与钟表相同的特点:,循 环 计 数,因此对于计算机,要计算像8-2这样的减法式子,也可以化为加法形式来进行。,思考: 在计算机中, 8-2是否也可以化为8+10?如果不行,那
4、么应化为什么样的式子?,补码 引入的思路(4),不同之处: 表计时的最大数是12 计算机计数的最大数不是12 (思考:那么是多少呢?) 我们把这个数称为 模 计算机的模与字长有关。8位机的模是28=256,补码 引入的思路(5),观察钟表拨针的两种方法:8 - 2 = 68 + 10 = 6我们可以看出,减去一个数 a 相当于加上(模-a)一样,而在计算机中也有相同情况。 在8位字长的计算机中,减去一个数a相当于加上(28-a)一样。 我们称(28-a)为a的补数,其二进制表示形式称为补码。,补码 补码的求法(1),正数:与原码相同; 负数:“求反加一” 例:x=+1001100B,则x补=0
5、1001100B=x原x=-1001100B,则x补=10110100Bx=-1001100时, x补=28-1001100B=256 -1001100B=255 -1001100B +1=11111111B -1001100B+1= 10110100B,补码 补码的求法(2),对于负数的补码求法,还有另一个更快速的办法:符号位为1,真值中最后一个1以前的各位按位求反,而最后一个1及其后的0保持不变。,补码 补码的求法(3),课堂练习1、求出下列各数的补码(8位)(1) 67(2) +1011001B(3) 45,10111101,01011001,11010011,补码 补码的作用与效果,用
6、补码表示计算机中的数后,加减运算均可统一为加法。 例:,设 x=+0000111 , y=+0000100, 计算式子:xy(先算出x补=00000111, -y补=11111100 , xy=x+(-y) ),补码运算:,x-y补,手工验算:,补码 几点补充说明(1),微机内部,带符号数均用补码表示。 采用补码进行运算后,结果也是补码,欲得真值,需作转换。,补码 几点补充说明(2),如果已知x的补码x补,则求-x补的方法是:对x补连同符号位一起求反加1例:,已知 +35的补码是00100011,则 -35补=11011101,补码 几点补充说明(3),用补码运算时符号位也参与运算,有符号数与
7、无符号数的运算是兼容的。 例:,二进制数相加,看成无符号数,看成补码,出现问题,错误的结果:,-0110101,-1101111,-53,-111,+92,+1011100,-164,思考:为什么出现了错误?,补码 溢出,刚才出现的问题叫做“溢出”; 溢出的原因:运算结果超出了可表示的有符号数的范围。 溢出只会出现在两个同号数相加或两个异号数相减的情况下。,思考:如何判别溢出与正常进位?,补码 溢出的判别(1),方法一:转换为真值,判断是否超出数值表示范围。 方法二:根据最高位的进、借位情况进行判断。 溢出:“有进无出”或“无进有出” 正常:“有进有出”或“无进无出”,补码 溢出的判别(2),
8、图c 无进有出,图d 有进无出,溢出,溢出,图a 有进有出,图b 无进无出,正常,正常,补码 溢出的判别(3),课堂练习1、请判断下列8位补码的运算是否会产生溢出?,11001001 11100111,10110000,有进有出,无溢出,01100011 01001010,10101101,有进无出,溢出,补 码 小 结,真值,机器数,无符号数,有符号数,原码,反码,补码,补码的求法,由补码求真值的方法,已知x补,求-x补的方法,补码的作用,溢出,END,0,0,0,0,0,0,0,0,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,2,255,0,循环计数,