1
2 //因为java中的int型占用4个字节,也就是32个二进制位(二进制中八位一个字节)。
3 // 对于移位运算如果你移动了32位,那么所有的位都移出了,就没什么意义了,
4 // 所以系统会先将移动的位数对32取模。
5 //在进行位运算之前, 要先进行模的32位运算
6 int i = -5;
7 System.out.println("1: "+Integer.toBinaryString(i));
8 //二进制右移 ----除以2
9 int a=i>>1;
10 System.out.println("i>>1: "+Integer.toBinaryString(a));
11 a=i>>32;
12 System.out.println("i>>32: "+Integer.toBinaryString(a));
13 //二进制左移 ----乘以2
14 int b=i<<1;
15 System.out.println("i<<1: "+Integer.toBinaryString(b));
16 b=i<<32;
17 System.out.println("i<<32: "+Integer.toBinaryString(b));
18 //二进制 无符号右移 最高位补0 只是对32位和64位的值有意义
19 int c=i>>>1;
20 System.out.println("i>>>1: "+Integer.toBinaryString(c));
21 c=i>>>32;
22 System.out.println("i>>>32: "+Integer.toBinaryString(c));
1: 11111111111111111111111111111011
i>>1: 11111111111111111111111111111101
i>>32: 11111111111111111111111111111011
i<<1: 11111111111111111111111111110110
i<<32: 11111111111111111111111111111011
i>>>1: 1111111111111111111111111111101
i>>>32: 11111111111111111111111111111011