【发布时间】:2016-10-31 12:15:28
【问题描述】:
当我写的时候:
signed int a = 4;
我的电脑是用 2 的表示吗?
因为如果我的计算机使用 2 的补码表示数字 4,这就是在 8 位机器上会发生的情况:
二进制值 4 : 0000 0100
2 的补码变为:1111 1011
加1:1111 1100
但我读到,当最重要的位是 1 时,您的数字是负数。但这里我最重要的位是 1 ,我的数字是 4 。它不是-4。
为什么我的数字 4 的最高位是 1?
【问题讨论】:
-
2 的补码用于减法;你不使用它来执行加法。
-
您可能想read more about two's complement。此外,您所说的 2 的补码 (1111 1011) 实际上不是二进制补码,而是 one's complement。
-
@Someprogrammerdude - 只是 OP 的措辞不佳,然后他添加了
1。 -
二回答你的问题,二的补码是表示负数。正数按原样表示。
-
你的号码是
4,但是通过在4上执行 2 的补码,你在这个符号中变成了-4,它不会保持相同的数字。
标签: c integer unsigned-integer