Java移位运算有三种:左移(<<)、右移(>>)、带符号右移(>>>)。
移位运算操作对象为整型,当对byte、char、short类型数据操作时转成int类型(正数高位填充0,负数高位填充1)。
1.左移运算
i<<n表示i对应二进制数左移n位,其中,左边n个高位被丢弃,并用n个0填充右边低位。
例子:1<<2
1对应二进制:0000 0000 0000 0000 0000 0000 0000 0001
左移两位后: 0000 0000 0000 0000 0000 0000 0000 0100
结果:4
看下面代码
public static void main(String[] args) {
int i = 1;
System.out.println(i<<2);
System.out.println(i<<(2 + 32));
byte b = -2;
System.out.println(b<<31);
}
输出结果为
4
4
0
对于byte、char、short和int类型数据,左移n位时先算n除以32的余数m