我有与 2 的补码相关的 aq。假设我在 2 的补码表示中有一个带符号的 16 位十六进制,例如,取 0xfaa
如果它是 16 位,我需要扩展它,因为它现在只有 12 位。我知道我必须扩大左侧,所以它会被做成0xffaa。
这意味着我的数字是负数,对吗?
我有与 2 的补码相关的 aq。假设我在 2 的补码表示中有一个带符号的 16 位十六进制,例如,取 0xfaa
如果它是 16 位,我需要扩展它,因为它现在只有 12 位。我知道我必须扩大左侧,所以它会被做成0xffaa。
这意味着我的数字是负数,对吗?
如果我理解你的问题,那么你是对的。
如果它是一个 12 位二进制补码负数,那么您取高位 - 通常称为位 11 - 并将其复制到其左侧的所有位中以填充其 16 的高 4 位-位等价物。正如您在问题中所说的那样,您拥有的 12 位值0xfaa
- 变成了 16 位值。0xffaa
在二进制中,12 位值是
111110101010
^
+---- bit 11
并成为 16 位值
1111111110101010
^ ^
| +-------- bit 11
+------------ bit 15
这两个词的长度不同绝不会改变两个数字相等的事实。
您将最重要的数字设为 0,因此它将是 0x0faa。如果您假设并且 f 去了那里,那么您已经更改了数字的值。