嘿伙计们,我刚刚开始上高中的计算机科学课,在做和任务的时候,我对一件事感到非常困惑。
我使用无符号数字,我想要234(1110 1010)的两个补码。首先我将其转换为一个补码(0001 0101),然后我将+1添加到一个补码,因此我应该得到(0001 0110)。 但是,当我使用在线计算器转换器时,它给了我0000000011101010。
答案 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
之间,十进制数字为-128
到127
。