Ale*_*Mcp 8 binary signed twos-complement
我正在观看David Malan(这里)的一些很棒的讲座,这些讲座已经过了二元版.他谈到签名/未签名,1的赞美和2的补充表示.还增加了4 +( - 3),排列如下:
0100
1101 (flip 0011 to 1100, then add "1" to the end)
----
0001
Run Code Online (Sandbox Code Playgroud)
但他挥挥手,挥动了最后一根手.我做了一些维基百科的研究并没有得到它,有人可以向我解释为什么特定的携带(在8的 - > 16的列中)被丢弃了,但他保留了它之前的那个?
谢谢!
Mag*_*off 10
最后一次进位被丢弃,因为它不适合目标空间.这将是第五位.
如果他进行了相同的添加,但是例如8位存储,它将看起来像这样:
00000100
11111101
--------
00000001
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们也会陷入"未使用"的进位.
我们必须以这种方式对待这种方式,使得两个人的赞美工作得到适当的补充,但这一切都很好,因为这是在存储有限时处理携带的最简单方法.无论如何,我们得到了正确的结果,对:)
x86处理器在进位标志(CF)中存储这样的附加进位,这可以用某些指令进行测试.
在这个例子中,你确实有一个 MSB 的进位。根据定义,这个carry最终会落在地板上。(如果它有地方可以去,那么它就不会离开 MSB。)
但两个符号不同的数相加不会溢出。仅当具有相同符号的两个数字产生具有不同符号的结果时,才会发生溢出。