2第1章计算机的基础知识答辩.ppt

例2: 34-68=34+(-68)=-34 34=22H=0010 0010B 68=44H=0100 0100B [-68]补=1011 1100B 做减运算过程: 用补码相加过程: 结果相同。因为符号位为1,对其求补,得其真值:,即为-34(-22H)。 由上面两个例子还可以看出, 1)用补码相加完成两数相减,相减若无借位,化为补码相加就会有进位;相减若有借位,化作补码相加就不会有进位。 2)补码运算后的结果为补码,需再次求补才能得到运算结果的真值。 1.2.3 1.2.4 进位和溢出 例3 105+50=155 105=69H 50=32H 若把结果视为无符号数,为155,结果是正确的。若将此结果视为符号数,其符号位为1,结果为-101,是错误的。原因是和数155大于8位符号数所能表示的补码数的最大值127,数值部分占据了符号位的位置,产生了溢出,从而导致结果错误。又如: -105-50=-155 CY=1 两个负数相加,和应为负数,而结却为正数,显然是错误的。其原因是和数-155小于8位符号数所能表示的补码数的最小值-128,也产生了溢出。 结论:当两个补码数相加结果超出补码表示范围,就会产生溢出,导致结果错误。 计算机中设立了溢出标志位OV,通过最高位的进位(符号位的进位)CY和次高位进位(低位向符号位的进位)CY-1异或产生。 例4 74+74=4AH+4AH 0 1 0 0 1 0 1 0 0 01 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 CY⊕ CY-1=0 1=1…..有溢出 OV=1 CY CY-1 无进位 CY=0 由上两例中,例3的 OV=1、CY=1,例4中OV=1、CY=0,可见溢出和进位并非有必然的联系,这是由于两者产生的原因是不同的,两者判断的方法也是是不同的。重述如下: 溢出OV:两个补码数相加结果超出补码范围而产生,OV=CY⊕ CY-1 进位CY: 当运算结果超出计算机位数的限制(8位、16位),会产生进位,它是由最高位计算产生的,在加法中表现为进位,在减法中表现为借位。 1.2.4 1.2.5 BCD码 生活中人们习惯于十进制数,计算机只能识别二进制数,为了将十进制数变为二进制数,出现了BCD码,即二进制代码表示的十进制数。故名思意,它即是逢十进一,又是一组二进制代码。用4位二进制数编码表示1位十进制数称为压缩的BCD码,8位二进制数可以放2个十进制数位。也可以用8位二进制数表示1个十进制数位,这种BCD码称为非压缩的BCD码。十进制数和BCD码的对照表见表1-2 表1-2 BCD编码表 例:求十进制数876的BCD码 压缩的BCD码 : [876]BCD = 1000 0111 0110B=876H 非压缩的BCD码: [876]BCD00000111=080706H 又如,十进制数1994的压缩的BCD码=1944H 1994的非压缩的BCD码 1.2.5 1.2.6 BCD码的运算 BCD码运算应该得到BCD码结果,由于计算机是按二进制运算,结果不为BCD码,因此要进行十进制调整。调整方法为:当计算结果有非BCD码或产生进位/借位时,加法进行 +6、减法进行 -6 调整运算。 例:计算BCD码 78+69=? 0111 1000 78H + 0110 1001 + 69H 1110 0001 E1H………不调整,结果为二进制 + 0110 0110 + 66H………调整, 高4位产生非BCD码+6,和低4位有半 进位+6 1 0100 0111 147 调整结果:147 (带进位一起)为十进制结果 例:计算BCD码 38-29=? 0011 1000 38H - 0010 1001 - 29H 0000 1111 0FH - 0000 0110

文档评论(0)

1亿VIP精品文档

相关文档