移位字节值

Shifting a byte value

我有以下 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的值怎么变成?我没听懂。

因为一个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

(即 0)。