java 位移运算符

 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

原文地址:https://www.cnblogs.com/the-wang/p/8119763.html