JAVA中的>>和>>>号以及<<号的作用

 1     public static void main(String[] args) {
 2         
 3         //右移2位,输出结果为2。二进制1000右移2位变为0010
 4         System.out.println(8>>2);
 5         //等同于 8除以2的3次方,即8/Math.pow(2,3)。输出为1
 6         System.out.println(8>>>3);
 7         
 8         //左移2位,输出结果为8。二进制0010左移2位变为1000
 9         System.out.println(2<<2);
10         //语法错误,不支持
11         System.out.println(8<<<3);
12         
13     }

1、 >>带符号右移。正数右移高位补0,负数右移高位补1
快速记忆:相当于除以一个值,正数除完后最小值为0,负数除完最大值为-1

2、 >>>无符号右移。无论是正数还是负数,高位通通补0
快速记忆:正数相当于除以一个值,最小值为0
负数比较麻烦,暂时没有找到快速记忆方法,有同学知道的可以告知

3、 <<表示左移,不分正负数,低位补0

快速记忆:不管正负数,相当于乘以一个数

 1 public static void main(String[] args) {
 2         // >>带符号右移。正数右移高位补0,负数右移高位补1
 3         System.out.println("====================== >>带符号右移 =========================================");
 4         System.out.println("----------------正数举例----------------------");
 5         // 8的2进制表示为1000
 6         System.out.println(Integer.toBinaryString(8));
 7         // 输出向右移动两位
 8         System.out.println(8>>2);
 9         // 输出向右移动两位的二进制0010   即:十进制的2
10         System.out.println(Integer.toBinaryString(8>>2));
11         System.out.println("-----------------正数超出位数举例---------------------");
12 
13         System.out.println(Integer.toBinaryString(8));
14         System.out.println(8>>6);
15         System.out.println(Integer.toBinaryString(8>>6));
16 
17         System.out.println("----------------负数举例----------------------");
18         System.out.println(Integer.toBinaryString(-8));
19         System.out.println(-8>>2);
20         System.out.println(Integer.toBinaryString(-8>>2));
21         System.out.println("-----------------负数超出位数举例---------------------");
22 
23         System.out.println(Integer.toBinaryString(-8));
24         System.out.println(-8>>6);
25         System.out.println(Integer.toBinaryString(-8>>6));
26         // >>>无符号右移。无论是正数还是负数,高位通通补0
27         System.out.println("====================== >>>无符号右移 =========================================");
28         System.out.println("----------------正数举例----------------------");
29         System.out.println(Integer.toBinaryString(8));
30         System.out.println(8>>>2);
31         System.out.println(Integer.toBinaryString(8>>>2));
32         System.out.println("-----------------正数超出位数举例---------------------");
33 
34         System.out.println(Integer.toBinaryString(8));
35         System.out.println(8>>>6);
36         System.out.println(Integer.toBinaryString(8>>>6));
37 
38         System.out.println("----------------负数举例----------------------");
39         System.out.println(Integer.toBinaryString(-8));
40         System.out.println(-8>>>2);
41         System.out.println(Integer.toBinaryString(-8>>>2));
42         System.out.println("-----------------负数超出位数举例---------------------");
43         System.out.println(Integer.toBinaryString(-8));
44         System.out.println(-8>>>6);
45         System.out.println(Integer.toBinaryString(-8>>>6));
46         // <<表示左移,不分正负数,低位补0
47         System.out.println("====================== <<左移 =========================================");
48         System.out.println("----------------正数举例----------------------");
49         System.out.println(Integer.toBinaryString(8));
50         System.out.println(8<<2);
51         System.out.println(Integer.toBinaryString(8<<2));
52 
53         System.out.println("----------------负数举例----------------------");
54         System.out.println(Integer.toBinaryString(-8));
55         System.out.println(-8<<2);
56         System.out.println(Integer.toBinaryString(-8<<2));
57     }
原文地址:https://www.cnblogs.com/liangzs/p/6734084.html