【问题标题】:the carry in most significant bit(on 3 digits)最高有效位进位(3 位数字)
【发布时间】:2019-07-01 20:33:27
【问题描述】:
考虑 3 位上的二进制补码表示:
3+2 导致溢出。
011+010=100 // 为什么是 100?我觉得应该是101。
在这种情况下,最高有效位的进位和从最高有效位的进位是什么?
教科书上说最高位进位为1,最高位进位为0。
我认为教科书是错误的。进位应该是0,进位应该是1。我是正确的还是教科书是正确的?
请帮忙。谢谢。
Textbook
【问题讨论】:
标签:
binary
overflow
twos-complement
data-representation
【解决方案1】:
对和错,我想说,就像生活中的很多事情一样:-)
您说011 + 010 = 101 是正确的。您发布的链接给出了 -4 的 100 值,这是该值的正确解释,尽管不是正确的值。
通常可以通过将两个值相加得到溢出值.
换句话说,3 + 2 = 5 但是,因为它大于三(范围减一的一半),所以你减去范围 8 得到 -3,这就是你的正确位模式是,101:
Bit pattern Unsigned Signed
----------- -------- ------
000 0 0
001 1 1
010 2 2
011 3 3
100 4 -4
101 5 -3
110 6 -2
111 7 -1
但是,添加中间位(没有从右位结转)确实实际上会给您一个结果为 0 和进位为 1。
这意味着进入 MSB(左位)的进位是确实之一。而且,当把左边的数字(都是零)加上一个进位时,你会得到一个进位为零的数字。
可能是您对教科书的阅读方式与我不同,但我们可能不得不在这里怀疑它。