十六进制数字是否为负数?如果是,那么如何?
对于二进制文件,您可以签名和签名
如何用Hex表示它们?我需要这个用于我即将开始的十六进制例程。
答案 0 :(得分:22)
是。例如,您在带符号的32位二进制和十六进制中具有以下表示形式:
Decimal: 1
Binary: 00000000 00000000 00000000 00000001
Hex: 00 00 00 01
Decimal: -1
Binary: 11111111 11111111 11111111 11111111
Hex: FF FF FF FF
Decimal: -2
Binary: 11111111 11111111 11111111 11111110
Hex: FF FF FF FE
如您所见,负数的十六进制表示与二进制表示直接相关。
答案 1 :(得分:14)
数字的高位确定它是否为负数。因此,例如int是32位长,所以如果位31是1,则它是负的。现在你如何显示该值,无论是十六进制还是十进制无关紧要。所以十六进制值如
0x80000000
0x91345232
0xA3432032
0xBFF32042
0xC33252DD
0xE772341F
0xFFFFFFFF
都是负数,因为最高位设置为1
|
v
0x8 -> 1000
0x9 -> 1001
0xA -> 1010
0xB -> 1011
0xC -> 1100
0xD -> 1101
0xE -> 1110
0xF -> 1111
答案 2 :(得分:6)
是的,他们可以。它与二进制文件的解释方式相同(签名与无符号)。
答案 3 :(得分:5)
您可以使用二进制有符号和无符号表单,然后将其表示为十六进制,就像任何二进制数一样。
答案 4 :(得分:3)
一方面,为什么不呢 - 它只是一个位置数字系统,如十进制。
另一方面,它们通常使用十六进制表示法推导出基础位模式 - 如果数字被解释为无符号,则更为直接。
所以答案是 - 它是可能的,数学上正确且内部一致,但是却违背了十六进制表示法的最常见目的。
答案 5 :(得分:1)
在Java中,这些是Integer
数据类型的边界:
Integer.MIN_VALUE = 0x80000000;
Integer.MAX_VALUE = 0x7fffffff;