//确定

Byte b = (byte)207;
System.out.println(b); //value = 207

//好没道理
Integer x = Integer.parseInt("11001111", 2); //207
Byte sens = (byte)x.intValue(); //207
System.out.println(sens); //Value = -49
System.out.println(sens.intValue()); //Value = -49

这里发生了什么?

我如何声明/表示一个8位字节,其值大于127,然后是

最佳答案

Java中的字节是带符号的,因此它们从-128到127。像这样强制转换int将在1处获得高位(在two's complement带符号的数字中指示负数)并将其转换为负数-49。

从那里开始,当您使用sens.intValue()将其转换回整数时,它将拾取新的负值并返回它,因此您仍然得到-49。

不幸的是,您将需要在int数据类型中存储大于128的字节。

10-05 21:32