我不理解Java中二进制数的行为

时间:2016-12-27 11:58:23

标签: java binary

我有以下代码:

System.out.println(0b11111111);
System.out.println((byte) 0b11111111);

第一行打印

  

255

,第二行打印

  

-1

请有人解释一下为什么结果会有所不同? (byte)如何将0b11111110号码变为-1

谢谢!

1 个答案:

答案 0 :(得分:5)

byte类型的范围是-128到127.由于255不是有效的字节值,因此当转换为字节时,二进制数11111111为-1。

如果您未将0b11111111投射到byte,则它(默认情况下)仍然是int,而255是有效的int值。