我正在研究Two的补充补充。基本上我需要显示-27到+31的加法,两个数字都是二进制,使用6位。
我的问题是携带操作。也许我做得不对劲。
-27是二进制:111011
+31是二进制:011111
我认为答案应该是:
+4是二进制:000010
这就是我正在做的事情:
Carry 1 1 1 1 1
- 27 1 1 1 0 1 1
+ 31 0 1 1 1 1 1
-------------------------
Sum: 0 1 1 0 1 0
在我的脑海中计算到52而不是4.
我做错了什么?
答案 0 :(得分:3)
你的数学错了。
27是二进制0 1 1 0 1 1
(注意我为符号添加的前导0)
-27是两个补码中的1 0 0 0 1 1
。
当你用这个做数学时,你应该得到正确的结果。
这是快速执行两个补码的“技巧”。
从LSB开始,准确地复制数字,直到遇到第一个零,然后复制该零。之后,翻转所有位直到MSB。
这相当于翻转所有位(一个补码)并添加一个(将其变为二进制补码),但只需一步。
答案 1 :(得分:1)
嗯,31 - 27 = 4
,正确! :)
4 is 100
,你确定-27 is 111011
???