2的补充问题

时间:2011-04-17 18:26:49

标签: twos-complement

我有一个与2的补码相关的q。 假设我在2的补码表示中有一个带符号的16位十六进制 例如,取0xfaa

如果它是16位,我需要扩展它,因为它现在只有12位。我知道我必须扩展左侧,所以它将被制成0xffaa。

这意味着我的号码是否定的,这是正确的吗?

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,那么你是对的。

如果它是一个12位二进制补码负数,那么你取高阶位 - 通常称为第11位 - 并将其复制到左边的所有位以填充高位4位它的16位等价物。正如您在问题中所述,您拥有的12位值 - 0xfaa - 将成为16位值0xffaa

在二进制中,12位值为

    111110101010
    ^
    +---- bit 11 

并成为16位值

 1111111110101010
 ^   ^
 |   +-------- bit 11 
 +------------ bit 15

这两个词的长度不同,决不会改变两个数字相等的事实。

答案 1 :(得分:0)

你会将最重要的数字设为0,所以它将是0x0faa。如果你假设并且f去那里你已经改变了数字的值。