问题标题:
【机器数补码相加4位计算机,有两个机器数1000和1001,所采用的表示格式为补码,两个数相加为1001,10001,0001还是1000】
问题描述:
机器数补码相加
4位计算机,有两个机器数1000和1001,所采用的表示格式为补码,两个数相加为
1001,10001,0001还是1000
景志刚回答:
1000+1001=0001
孟煜回答:
为什么呀?两个负的相加怎么会是正数?
景志刚回答:
可能的,这就是溢出。
补码运算,和普通二进制数的运算,完全相同。
1000+1001=(1)0001,进位丢弃了。
孟煜回答:
所有溢出的解决办法都是进位丢弃吗?书上只写了判断溢出的方法,没有写解决办法
景志刚回答:
哦,进位丢弃了,和溢出,还不是一个概念。
溢出,发生在补码运算。
溢出,就是错了,无法挽回。
但是,如果是无符号数运算,把进位,算上,数字还是不错的。
孟煜回答:
可是机器数不都是有符号的吗?最高位是符号位呀
景志刚回答:
最高位,是符号位。
把这个数字,换算成十进制的时候,确实要用最高位,来当做正负号。
但是,补码运算,是把符号位,当成数字,一起计算。
和普通二进制数的运算方法,完全相同。
因此,补码和普通二进制数,在CPU里面,就可以使用同一个““计算器””。
因此,就节省了硬件。
这是惯用的方法。
点击显示
数学推荐
热门数学推荐