移位运算符
- 对数据在内存的中表示, 进行按位移动,以此来达到计算目的的运算符。
- 移位操作的变量自身不改变。
- 对char类型数据进行移位运算时会对它的ASCII码值进行操作。
- 对byte、short或者char类型数据进行移位操作时,会先把它们自动“升级”为int后再进行运算。
- << : 左移运算符, 每移动一位,相当于扩大2倍. 移动几位相当于乘以2的几次方。
- >> :右移运算符,每移动一位,相当于缩小2倍, 移动几位相当于除以2的几次方。
- >>> :无符号右移, 每移动一位,相当于缩小2倍,移动几位相当于除以2的几次方。
- 无符号右移只能操作正数. 负数的结果不是你想要的。
class ShiftTest {
public static void main(String[] args) {
int a = 2;
int b = -2;
byte c = -2; //byte类型转化为int类型
System.out.println(a << 2); //运算结果: 8
System.out.println(a >> 2); //运算结果: 0
System.out.println(b >> 2); //运算结果: -1
System.out.println(b >>> 2); //运算结果: 1073741823
System.out.println(c >>> 2); //运算结果: 1073741823
}
}
运算结果1073741823是将-2的32位二进制代码右移两位,左边补两个0的二进制转换十进制得到。