1

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

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

这意味着我的数字是负数,对吗?

4

2 回答 2

2

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

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

在二进制中,12 位值是

    111110101010
    ^
    +---- bit 11 

并成为 16 位值

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

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

于 2011-04-17T18:35:57.433 回答
0

您将最重要的数字设为 0,因此它将是 0x0faa。如果您假设并且 f 去了那里,那么您已经更改了数字的值。

于 2011-04-17T18:29:34.547 回答