public class wrenwren
{
public static void main(String argv[])
{
byte b = 0;
int i = 5000;
b = (byte)i;
//System.out.println(Integer.toBinaryString(i));
System.out.println(b);
}
}结果为什么是-120呢? 5000的后8位是1000 1000 应该是-8吧?
{
public static void main(String argv[])
{
byte b = 0;
int i = 5000;
b = (byte)i;
//System.out.println(Integer.toBinaryString(i));
System.out.println(b);
}
}结果为什么是-120呢? 5000的后8位是1000 1000 应该是-8吧?
byte from -128 to 127 in java
已经溢出了
100000000 - self
为什么10001000是136 放byte范围就是-120呢??
高位为1的binary value在java中约定为十进制负数
转换规则为取反加一(binary operation)
136 - 256 = -120(it's a convention)
11111000才是-8解释一下:java是用补码来表示负数的,
8 = 00001000, 那么-8的反码就是11110111,-8补码就是反码+1 = 11111000
而120是01111000,同理-120 = 10001000