十六进制数字是负数吗?

时间:2011-04-29 01:09:49

标签: java hex negative-number

十六进制数字是否为负数?如果是,那么如何?
对于二进制文件,您可以签名签名 如何用Hex表示它们?我需要这个用于我即将开始的十六进制例程。

6 个答案:

答案 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;