public static void main(String[] args) { //右移2位,输出结果为2。二进制1000右移2位变为0010
System.out.println(8>>2);
//等同于 8除以2的3次方,即8/Math.pow(2,3)。输出为1
System.out.println(8>>>3); //左移2位,输出结果为8。二进制0010左移2位变为1000
System.out.println(2<<2);
//语法错误,不支持
System.out.println(8<<<3); }
1、 >>带符号右移。正数右移高位补0,负数右移高位补1
快速记忆:相当于除以一个值,正数除完后最小值为0,负数除完最大值为-1
2、 >>>无符号右移。无论是正数还是负数,高位通通补0
快速记忆:正数相当于除以一个值,最小值为0
负数比较麻烦,暂时没有找到快速记忆方法,有同学知道的可以告知
3、 <<表示左移,不分正负数,低位补0
快速记忆:不管正负数,相当于乘以一个数
public static void main(String[] args) {
// >>带符号右移。正数右移高位补0,负数右移高位补1
System.out.println("====================== >>带符号右移 =========================================");
System.out.println("----------------正数举例----------------------");
// 8的2进制表示为1000
System.out.println(Integer.toBinaryString(8));
// 输出向右移动两位
System.out.println(8>>2);
// 输出向右移动两位的二进制0010 即:十进制的2
System.out.println(Integer.toBinaryString(8>>2));
System.out.println("-----------------正数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(8));
System.out.println(8>>6);
System.out.println(Integer.toBinaryString(8>>6)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>2);
System.out.println(Integer.toBinaryString(-8>>2));
System.out.println("-----------------负数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>6);
System.out.println(Integer.toBinaryString(-8>>6));
// >>>无符号右移。无论是正数还是负数,高位通通补0
System.out.println("====================== >>>无符号右移 =========================================");
System.out.println("----------------正数举例----------------------");
System.out.println(Integer.toBinaryString(8));
System.out.println(8>>>2);
System.out.println(Integer.toBinaryString(8>>>2));
System.out.println("-----------------正数超出位数举例---------------------"); System.out.println(Integer.toBinaryString(8));
System.out.println(8>>>6);
System.out.println(Integer.toBinaryString(8>>>6)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>>2);
System.out.println(Integer.toBinaryString(-8>>>2));
System.out.println("-----------------负数超出位数举例---------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8>>>6);
System.out.println(Integer.toBinaryString(-8>>>6));
// <<表示左移,不分正负数,低位补0
System.out.println("====================== <<左移 =========================================");
System.out.println("----------------正数举例----------------------");
System.out.println(Integer.toBinaryString(8));
System.out.println(8<<2);
System.out.println(Integer.toBinaryString(8<<2)); System.out.println("----------------负数举例----------------------");
System.out.println(Integer.toBinaryString(-8));
System.out.println(-8<<2);
System.out.println(Integer.toBinaryString(-8<<2));
}