Java中有三种移位运算符
<< : 左移运算符,对应二进制码整体左移,左边超出的部分舍弃,右边补零
>> : 右移运算符,对应的二进制码整体右移,左边的用原有标志位补充,右边超出的部分舍弃
>>> : 无符号右移,忽略符号位,将该数的二进制码整体右移,左边部分总是以0填充,右边部分舍弃(针对32位和64位)
public class ShiftDemo {
public static void main(String[] args) {
int number = 10;
System.out.println("原始数据:" + number + "(" + Integer.toBinaryString(number) + ")");//10
number <<=2;
System.out.println("左移两位" + number + "(" + Integer.toBinaryString(number) + ")");//40
number >>=3;
System.out.println("右移三位" + number + "(" + Integer.toBinaryString(number) + ")");//5
int number2 = 12;
number2 >>>=3;
System.out.println("无符号右移三位" + number2 + "(" + Integer.toBinaryString(number2) + ")");//1
int number3 = -5;
number3 >>>=2;
System.out.println("无符号右移两位" + number3 + "(" + Integer.toBinaryString(number3) + ")");//1073741822
}
}