为什么0xff000000在Java中是否定的?

时间:2015-11-05 03:59:20

标签: java

FF000000=4278190080<2^(8*4)-1 (4 bytes)

但是当我输入“System.out.println(0xff000000);

显示“-16777216”。为什么它在java中变为负数?

1 个答案:

答案 0 :(得分:2)

您必须知道的第一件事是如何在java中表示带符号的数字: FF000000 是一个标记的数字,如果您将其转换为二进制将类似 1111 1111 0000 0000 0000 0000 0000 0000 现在,MSB是符号位,其余是2的补码中的数字。

这意味着在2的补码中 FF000000 = - (00FFFFFF),这是-16777216。

有关java primitive Data的更多信息,请点击此处。