我有一个与2的补码相关的q。 假设我在2的补码表示中有一个带符号的16位十六进制 例如,取0xfaa
如果它是16位,我需要扩展它,因为它现在只有12位。我知道我必须扩展左侧,所以它将被制成0xffaa。
这意味着我的号码是否定的,这是正确的吗?
答案 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去那里你已经改变了数字的值。