为什么在Java中-1 << 32等于-1而不是0?

时间:2019-06-22 23:28:42

标签: java bitwise-operators

将所有1移出-1整数会产生-1而不是0。

我尝试将一个字节移位8并得到0,这是我所期望的。 我还尝试将-2移31个位并得到0。

public static void main(String[] args) {
    System.out.println(Integer.toBinaryString(-1<<31)+" : "+(-1<<31));
    System.out.println(Integer.toBinaryString(-1<<32)+" : "+(-1<<32));
    System.out.println(Integer.toBinaryString(-2<<31)+" : "+(-2<<31));


    byte b=-1;
    b<<=8;
    int i =-1;
    i<<=32;
    int j =-2;
    j<<=31;
    System.out.println(b);
    System.out.println(i);
    System.out.println(j);
}
10000000000000000000000000000000 : -2147483648
11111111111111111111111111111111 : -1
0 : 0
0
-1
0

0 个答案:

没有答案