FF000000=4278190080<2^(8*4)-1 (4 bytes)
但是当我输入“System.out.println(0xff000000);
”
显示“-16777216
”。为什么它在java
中变为负数?
答案 0 :(得分:2)
您必须知道的第一件事是如何在java中表示带符号的数字: FF000000 是一个标记的数字,如果您将其转换为二进制将类似 1111 1111 0000 0000 0000 0000 0000 0000 现在,MSB是符号位,其余是2的补码中的数字。
这意味着在2的补码中 FF000000 = - (00FFFFFF),这是-16777216。
有关java primitive Data的更多信息,请点击此处。