机器数补码相加

问题描述:

机器数补码相加
4位计算机,有两个机器数1000和1001,所采用的表示格式为补码,两个数相加为
1001,10001,0001还是1000

1000 + 1001 = 0001为什么呀?两个负的相加怎么会是正数?可能的,这就是溢出。

补码运算,和普通二进制数的运算,完全相同。

1000 + 1001 = (1) 0001,进位丢弃了。所有溢出的解决办法都是进位丢弃吗?书上只写了判断溢出的方法,没有写解决办法哦,进位丢弃了,和溢出,还不是一个概念。

溢出,发生在补码运算。
溢出,就是错了,无法挽回。

但是,如果是无符号数运算,把进位,算上,数字还是不错的。可是机器数不都是有符号的吗?最高位是符号位呀最高位,是符号位。
把这个数字,换算成十进制的时候,确实要用最高位,来当做正负号。


但是,补码运算,是把符号位,当成数字,一起计算。
和普通二进制数的运算方法,完全相同。


因此,补码和普通二进制数,在 CPU 里面,就可以使用同一个““计算器””。
因此,就节省了硬件。
这是惯用的方法。