字节值大于127

sta*_*low 2 java byte

//好有意义

Byte b = (byte)207;
System.out.println(b); //value = 207
Run Code Online (Sandbox Code Playgroud)

//好吧没有意义

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
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

如何声明/表示值大于127的8位字节

Pet*_*ott 8

Java中的字节是有符号的,因此它们从-128到127.像这样输入一个int会将高位取为1(表示2的补码有符号数中的负数)并将其转换为负数-49.

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

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

  • 他们的第一个案例没有打印 207,他只是在旁边有一个 207 的评论。`x.intValue()` 的值是 207,但是转换为 byte 会将它变成 -49 (2认同)