字节值大于127

时间:2013-01-07 22:06:25

标签: java byte

//确定有意义

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位字节

4 个答案:

答案 0 :(得分:8)

Java中的

字节是有符号的,所以它们从-128到127.像这样生成一个int会将高位设为1(表示two's complement有符号数字中的负数)并将其转换为负数-49。

从那里,当你将它转换回sens.intValue()的整数时,它会获取新的负值并返回它,所以你仍然得到-49。

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

答案 1 :(得分:0)

由于Java的字节已签名,因此不能表示大于127的字节值。

在你的例子中:

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

有错误。 println的输出是-49。

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

这意味着两种情况都是相同的。

答案 2 :(得分:0)

它不能超过127正,但它可以去128负的原因是,一个字节中8个数字中的前1个表示它是负数还是正数:

1 =负面

0 =正面

由于你可以使用“1111 1111”作为负数,你可以得到-127。

答案 3 :(得分:0)

255 +负byteValue + 1将通过计数器操作返回您的数字。仍然建议将其存储在一个整数中。

如果喜欢按位,最好在其周围放一个数字环。