考虑3位的二进制补码表示法:
3 + 2导致溢出。
011 + 010 = 100 //为什么是100?我认为应该是101。
在这种情况下,最高有效位的进位和最高有效位的进位是什么?
教科书上说,最高有效位的进位为1,最高有效位的进位为0。
我认为教科书是错误的。进位应为0,进位应为1。我正确还是教科书正确?
请帮助。谢谢。
答案 0 :(得分:0)
正确的和错误,就像生活中的大部分时间一样:-)
您正确地说出011 + 010 = 101
。您发布的链接给出了100
的{{1}}值,尽管它不是正确的值,但这是对该值的正确解释。
通常,您可以通过将两个值不加加到溢出中来获得溢出的值,然后减去范围(如果是三位值,则为八个),如果该范围大于范围的一半减去一个
换句话说,-4
,但是,由于该值大于3(一半范围减去一个),因此您减去范围3 + 2 = 5
得到8
,这就是您的正确位模式为-3
:
101
但是,将中间位相加(没有从右位进位)确实会给您零结果和进位1的结果。
这意味着MSB(左位)的进位确实是 。而且,当将那些左位数(均为零)与进位为1相加时,您会得到带有零进位的1。
也许您对我的教科书的阅读方式与我不同,但在这里我们可能不得不从怀疑中受益。