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

Posted 哇,被发现了☜(゚ヮ゚☜)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有进位一定溢出吗?有溢出一定进位吗?来看这里相关的知识,希望对你有一定的参考价值。

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

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)最高位进位,但结果依然正确,没有发生溢出

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

我是一个还没有想好写点啥的小尾巴

以上是关于有进位一定溢出吗?有溢出一定进位吗?来看这里的主要内容,如果未能解决你的问题,请参考以下文章

汇编中的有符号-无符号-溢出-进位

Composition principle

java有内存溢出吗?如果有是啥情况?

linux小数点会自动进位吗

重学计算机计组D3章:运算方法与运算器

大数加法