Java 中有三种移位运算符:
<<
:将一个数的所有位向左移动指定的位数,右侧用零填充。>>
:将一个数的所有位向右移动指定的位数。对于正数,右移操作将在左侧插入零;对于负数,则插入符号位。>>>
:将一个数的所有位向右移动指定的位数,但是无论该数是正数还是负数,在左侧都插入零。
示例:
左移运算符的一般形式如下:
result = value << numBits;
其中,value 是要进行移位操作的数,numBits 是要左移的位数。示例代码如下:
int num = 10; // 二进制表示为 0000 1010
int result = num << 2; // 左移两位
System.out.println(result); // 输出 40,二进制表示为 0010 1000
右移运算符的一般形式如下:
result = value >> numBits;
其中,value 是要进行移位操作的数,numBits 是要右移的位数。示例代码如下:
int num = 20; // 二进制表示为 0001 0100
int result = num >> 2; // 右移两位
System.out.println(result); // 输出 5,二进制表示为 0000 0101
无符号右移运算符的一般形式如下:
result = value >>> numBits;
其中,value 是要进行移位操作的数,numBits 是要右移的位数。示例代码如下:
int num = -20; // 二进制表示为 1111 1111 1111 1111 1111 1111 1110 1100
int result = num >>> 2; // 无符号右移两位
System.out.println(result); // 输出 1073741823,二进制表示为 0011 1111 1111 1111 1111 1111 1111 1011
这些移位运算符在处理位操作时非常有用,例如在位级别上操作整数、加密算法和优化算法等领域中经常会用到。