我正在观看David Malan(here)的一些精彩讲座,这些讲座已经过了二元版。他谈到签名/未签名,1的赞美和2的补充表示。还有一个4 +( - 3)的加法,排列如下:
0100
1101 (flip 0011 to 1100, then add "1" to the end)
----
0001
但是他挥挥手,挥动了最后一根手。我做了一些维基百科的研究并没有得到它,有人可以向我解释为什么特定的携带(在8的 - > 16的列中)被丢弃了,但他保留了它之前的那个吗?
谢谢!
答案 0 :(得分:10)
最后一次进位被丢弃,因为它不适合目标空间。这将是第五位。
如果他进行了相同的添加,但是例如8位存储,它将看起来像这样:
00000100
11111101
--------
00000001
在这种情况下,我们也会陷入“未使用”的进位。
我们必须以这种方式对待,以便在两个人的赞美工作正常的情况下进行补充,但这一切都很好,因为这是在存储有限时处理携带的最简单方法。无论如何,我们得到了正确的结果,对吧:)
x86处理器在进位标志(CF)中存储了这样一个附加进位,可以用某些指令进行测试。
答案 1 :(得分:4)
在示例中,您确实执行了MSB。根据定义,这种携带最终落在了地板上。 (如果有一个地方可以去,那么它就不会出自MSB。)
但是添加两个带有不同符号的数字不会溢出。只有当具有相同符号的两个数字产生具有不同符号的结果时,才会发生溢出。
答案 2 :(得分:3)
如果你通过增加更多的数字位置来扩展左侧,你会看到进位滚动到左边的无限位位置,所以你永远不会真正得到1的最终进位。所以回答是肯定的。
...000100
+...111101
----------
....000001
答案 3 :(得分:2)
在某些时候,您必须设置代表数字的位数。他选择了4位。进入第5位的任何进位都会丢失。但那没关系,因为他决定用4位代表数字。
如果他决定使用5位代表数字,他会得到相同的结果。
答案 4 :(得分:2)
这就是它的美丽......你的结果将与你添加的术语大小相同。所以第五位被抛出
在2的补码中,使用进位位来表示上一次操作是否有溢出。
您必须查看 LAST 两个进位位以查看是否存在溢出。在您的示例中,最后两个进位位是11
,意味着没有溢出。
如果最后两个进位位是11
或00
,则不会发生溢出。如果最后两个进位位是10
或01
则存在溢出。这就是为什么他有时会关心进位,有时候他会忽略它。
下面的第一行是进位行。此行中最左侧的位用于确定是否存在溢出。
1100
0100
1101
----
0001
答案 5 :(得分:1)
看起来你只使用4位,所以没有16列。
如果你使用超过4位,那么-3表示将是不同的,并且数学的进位仍将被抛出结束。例如,你有6位:
000100
111101
------
1000001
并且由于进位超出了你的代表的位范围,它就消失了,你只有000001
答案 6 :(得分:1)
考虑25 + 15:
5 + 5 = 10,我们保持0并让1进入数十列。那么它是2 + 1(+ 1)= 4.因此结果是40:)
二进制文件也是如此。 0 + 1 = 1,0 + 0 = 0,1 + 1 = 10 =>发送1的8列,0 + 1(+ 1)= 10 =>将1发送到下一列 - 这是溢出,以及为什么我们抛弃1。
这就是为什么2的补码非常棒。它允许你像添加base-10一样添加/减少,因为你(ab)使用符号位是MSB的事实,当nessecary时,它会将操作一直级联到溢出。
希望我让自己明白了。当英语不是你的母语时,很难解释这一点:)
答案 7 :(得分:1)
当执行2的补码加法时,进位表示问题的唯一时间是当出现溢出时 - 如果2个操作数具有不同的符号,则不会发生这种情况。
如果它们具有相同的符号,则溢出条件是当符号位从2个操作数改变时,即,有一个进位进入最高位。
如果我记得我的计算机体系结构了解到这一点,通常会在硬件级别通过一个标志检测到这个标志,当进入最高有效位不同时,该标志比执行最高位。在你的例子中不是这种情况(msb中有一个进位以及msb中的进位)。
一种想到它的简单方法是“不改变的标志”。如果进入msb与进位不同,那么标志就会不正确地改变。
答案 8 :(得分:0)
随身携带被丢弃,因为没有任何可以用它做的事情。如果它对结果很重要,则意味着操作溢出了可以存储在结果中的值范围。在汇编程序中,通常有一条指令可以测试超出结果结尾的进位,并且您可以在那里明确地处理它 - 例如,将其传递到多精度值的下一个较高部分。
答案 9 :(得分:-1)
因为你在谈论4位表示。与实际机器相比,它是不合理的,但如果我们理所当然地认为计算机在每个字节中有4位,那么我们就有以下属性:一个字节包装在15到-15之间。超出该范围的任何内容都无法存储。此外,无论如何,除了符号位还需要额外的第5位,你会怎么做?
现在,鉴于此,我们可以从日常数学中看到4 + (-3) = 1
,这正是你得到的。