我有以下代码:
System.out.println(0b11111111);
System.out.println((byte) 0b11111111);
第一行打印
255
第二行打印
-1
请问有人可以解释一下为什么结果不同吗? (byte)
怎么样铸件变更0b11111110
变成-1
的数字?
谢谢!
最佳答案
byte
类型的范围是 -128 到 127。由于 255 不是有效的字节值,因此二进制数 11111111
在转换为 byte 时为 -1。
如果您不将 0b11111111
转换为 byte
,它仍然(默认)为 int
,并且 255 是有效的 >int
值。
关于java - 我不明白 Java 中二进制数的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344771/