无符号二进制加法的溢出
计算如下无符号位8Bit 二进制加法 溢出后的结果
10101101 + 11011100
我知道这个肯定溢出,溢出后的计算结果是多少?结果必须约束在8位2进制. 展开
溢出,往往是指:数值过大,超出了编码所能表示的范围。
类似于水库 ... 。
本质上,任何形式的计数,都是有可能溢出的。
比如, 2020 年、2021 年...,我们已经习惯用四位数表示年份。
但是到了 9999 年,再过一年,你如果仍然用四位数表示,就会溢出了。
再如:座机的电话号码,七位转八位,就是为了防止溢出。
---------------------
在 Intel 设计的 CPU 中,有两个标志位:CF、OF(Over Flag)。
每当无符号数的运算出现了溢出,就会有 CF=1,翻译过来就是:进位。
每当有符号数溢出了,则 OF=1,称为 OVER,翻译过来就是:溢出。
按照 Intel 的论调,就是说:
所谓的“溢出”,是特指“有符号数的运算”。
无符号数的溢出,就不叫溢出了,必须得叫做“进位”
---------------------
这说法,有些“反人类”哈!
没有办法,人家是大佬嘛,说的对不对,也必须得这么执行。
所以,在计算机领域:
有符号数,才有可能出现溢出的。
溢出的特征,是“符号位出错”。
如:正数+正数,却得出了负数、 ... 。
无符号数,是没有溢出的,它只有“进位借位”。
而有符号数的运算,就不必关心进借位了。