我有以下代码:
System.out.println(0b11111111);
System.out.println((byte) 0b11111111);
Run Code Online (Sandbox Code Playgroud)
第一行打印
255
并打印第二行
-1
请问有人可以解释一下为什么结果会有所不同?(byte)铸造如何改变0b11111110它变成的数字-1?
谢谢!
byte类型的范围是-128到127.由于255不是有效的字节值,因此11111111在转换为字节时二进制数为-1.
如果不转换0b11111111为byte,则它(默认情况下)保持int为a,255是有效值int.