我有以下java程序:
public class java {
public static void main(String[] args) {
byte a=64, b;
int i;
i=a<<2;
b=(byte)(a<<2);
System.out.println(i);
System.out.println(b);
}
}
在这个程序中,为什么b的值是 0 ?
因为byte
正好是8位。int
的最后8位是0
。如果我们加上Integer.toBinaryString(int)
的结果,
byte a = 64;
int i = a << 2;
System.out.println(Integer.toBinaryString(i));
byte b = (byte) (a << 2);
你会看到输出是
100000000
所以b
(因为1
是第9位)变成
00000000