//Ok说得通
Byte b = (byte)207;
System.out.println(b); //value = 207//ok没有意义
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这是怎么回事?
如何声明/表示值大于127的8位字节,然后表示
发布于 2013-01-07 22:07:45
Java中的字节被签名,所以它们从-128转到127。在1(表示二补有符号数字中的负数)转换为负数时,这样的整数转换为负数-49。
在那里,当你用sens.intValue()把它转换回一个整数时,它取起新的负值并返回它,所以你仍然得到-49。
不幸的是,您需要在int数据类型中存储大于128个字节。
发布于 2013-01-07 23:29:31
由于Java是签名的,所以不能表示大于127个字节的值。
在你的例子中:
Byte b = (byte)207;
System.out.println(b); //value = 207有个错误。打印输出为-49。
Byte b = (byte)207;
System.out.println(b); //value = -49这意味着这两种情况是相同的。
发布于 2016-02-16 20:05:18
它不能超过127正,但它可以变为128负值的原因是,字节中的8位数字中的前1位代表的是负数还是正数:
1=负
0=正
因为你可以用“111111”来表示负数,所以你可以得到-127。
https://stackoverflow.com/questions/14204883
复制相似问题