试图了解~8
为-9
的原因。
我的错误数学如下:
1。)二进制8
为1000
2.)反转所有位:0111
。
3.)添加1:1000
。
....现在我开始有同样的事情了。我在这里做错了什么?
答案 0 :(得分:4)
四位只能表示两个补码中的-8 .. 7。要在8上进行数学计算,你至少需要5位。
您在此处所做的基本上是溢出,因为您的8
值最初编码为-9
。
这是一个重写版本:
8 = 01000
~8 = 10111
+1 = 11000
它的次要成分是1000
,当它被反转为0111
时,它是7和7 + 1,考虑到偏移,会让你回到8。
答案 1 :(得分:1)
让我们以8位工作。
8 = 00001000
9 = 00001001
~8 = 11110111 Inverse of 8
现在让我们做9
的2补码得到-9
00001001 9
11110110 Inverse
11110111 Add 1
-9 = 11110111
请注意~8 = -9