10

十六进制数永远是负数吗?如果是,那怎么办?
对于二进制文件,您将有signedunsigned
如何用十六进制表示它们?我需要这个来进行我即将开始的十六进制例程。

4

6 回答 6

25

是的。例如,您将有以下带符号的 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

如您所见,负数的十六进制表示与二进制表示直接相关。

于 2011-04-29T01:17:23.717 回答
15

数字的高位确定它是否为负数。例如,一个 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
于 2011-04-29T03:21:57.793 回答
6

是的,他们可以。它与二进制文件的解释方式相同(有符号与无符号)。

于 2011-04-29T01:11:49.707 回答
5

您将采用二进制有符号和无符号形式,然后以十六进制表示它们,就像您使用任何二进制数一样。

于 2011-04-29T01:11:48.533 回答
3

一方面,为什么不呢?它只是一个位置数字系统,比如十进制。

另一方面,他们通常使用十六进制表示法来推断底层的位模式——如果数字被解释为无符号,那就更直接了。

所以答案是——它是可能的,在数学上是正确的并且在内部是一致的,但是违背了十六进制表示法的最常见目的。

于 2013-07-29T20:38:09.587 回答
1

在 Java 中,这些是Integer数据类型的界限:

Integer.MIN_VALUE = 0x80000000; 
Integer.MAX_VALUE = 0x7fffffff;
于 2015-06-29T19:32:59.200 回答