有进位一定溢出吗?有溢出一定进位吗?来看这里


有进位不一定溢出
有溢出不一定进位
因为,溢出是结果超过了机器能表达的范围,有可能没有进位
而最高位进位时分情况,当最高位(符号位)进位时伴随次高位(真值最高位)的进位,就不会产生溢出
比如

bit 6->bit 7有进位,bit 7->bit 8有进位
bit8,7,6,5,4,3,2,1,0
1 1 1 1 1 1 1 1(-1)
+0 0 0 0 0 0 0 1(+ 1)

0 0 0 0 0 0 0 0( 0 ) OF=0

bit 6->bit 7有进位,bit 7->bit 8无进位
bit8,7,6,5,4,3,2,1,0
0 1 1 1 1 1 1 1(+127)
+0 0 0 0 0 0 0 1(+ 1)

1 1 1 1 1 1 1 1( -1 ) OF=1(因为:正数+正数=负数)

bit 6->bit 7无进位,bit 7->bit 8有进位
bit8,7,6,5,4,3,2,1,0
1 1 1 1 1 1 1 0(-2)
+1 0 0 0 0 0 0 1(- 1)

0 1 1 1 1 1 1 1(+127) OF=1(因为:负数+负数=正数)

从原理上来看,计算机用补码表示数字,只有最高位进位没有次高位进位的时候会产生溢出,但是最高位和次高位同时进位的时候没有溢出

因为1.最高位(符号位)进位而次高位(真值最高位)没有进位时,一定是2个负数相加,进位后产生负溢出,即两个负数相加产生正数

   2.次高位进位而最高位没有进位时,一定是2个正数相加,进位后使符号位产生改变(正溢出),俩正数相加产生负数

   3.最高位和次高位同时进位时,一定是次高位的进位导致最高位再次进位,即一正一负相加,比如11111111(-1)+00000001(+1)最高位进位,但结果依然正确,没有发生溢出

所以有进位不一定溢出,有溢出不一定(最高位)进位


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM