用2'补码技术代表负数?

ipk*_*iss 9 twos-complement

我使用2'补码来表示二进制形式的负数

案例1:数字-5

根据2'补充技术:

将5转换为二进制形式:

00000101然后翻转位

11111010,然后加1

00000001
Run Code Online (Sandbox Code Playgroud)

=>结果: 11111011

为了确保这是正确的,我重新计算到十进制:

-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5
Run Code Online (Sandbox Code Playgroud)

案例2:数字-240

采取相同的步骤:

11110000

00001111

00000001

00010000 => recalculate this I got 16, not -240
Run Code Online (Sandbox Code Playgroud)

我误会了什么?

Spe*_*esk 12

问题是你试图用只有8位代表240.8位有符号数的范围是-128到127.

如果你用9位代表它,你会看到你得到正确的答案:

011110000 (240)

100001111 (flip the signs)
+
000000001 (1)

=

100010000

=

-256 + 16 = -240
Run Code Online (Sandbox Code Playgroud)