这两个补码总是一个有符号的数字吗?

时间:2015-03-12 21:22:43

标签: binary

嘿伙计们,我刚刚开始上高中的计算机科学课,在做和任务的时候,我对一件事感到非常困惑。

我使用无符号数字,我想要234(1110 1010)的两个补码。首先我将其转换为一个补码(0001 0101),然后我将+1添加到一个补码,因此我应该得到(0001 0110)。 但是,当我使用在线计算器转换器时,它给了我0000000011101010。

1 个答案:

答案 0 :(得分:1)

我认为你有两个误解之一:

2的补码用于表示签名的号码。对于正2的补码数,也无需进行任何转换。因此,如果您的数字超过8位,那么这些8位前面就会有填充,而您的数字实际上是0000 0000 .... 1110 1010,这是正数 234.而2的补码是正数本身(身份)。

8位数1110 1010在2的补码中不是234(十进制)。它是负22(来自您描述的过程的值0001 0110的负数)。可能,您的计算器假设您的数据位数错误,符号位(最高位)实际上是填充0。

对于8位数字,十进制数234实际上太大,因为您必须将一位用于符号。这意味着8位数字必须介于-(2^7)(2^7) -1之间,十进制数字为-128127