2011-04-17 146 views
1

我有一个q与2的补码有关。 说我有在例如2的补码表示 签署的16位十六进制,采取0xfaa2的补码问题

,如果是16位的,我需要展开它的原因,它只有12位了。我知道我必须展开左侧,所以它会变成0xffaa。

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

+0

好的,谢谢,你们都对我认为 如果它已经是16位,那么它的0x0faa因为0是ommited但如果我需要将它从12位扩展到16位,它的0xffaa 谢谢 – PenguinSource 2011-04-17 18:47:15

+0

@PeguinSource - 请接受最好的答案。它可以帮助那些未来有同样问题的人更快地得到答案。 – skaz 2011-04-17 19:16:05

回答

0

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

2

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

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

在二进制中,12位值是

111110101010 
    ^
    +---- bit 11 

,成为16位值

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

这两个词不以任何方式不同长度的改变的事实,即两个数字是相等的。