Java中移位操作符有三个:<<、>>、>>>,分别叫做左移位操作符、有符号右移位操作符、无符号右移操作符。
左位移操作符(<<):无论是有符号数还是无符号数,都低位补0。
有符号右移位操作符(>>):用符号扩展,为正高位补0,为负高位补1。
无符号右移操作符(>>>):无论是有符号数还是无符号数,都高位补0,称为零扩展。
注意
移位预处理
char、byte、shor类型进行移位操作时,先会自动转换为int类型再移位。由于int类型只有32位,所以,-1<<32 == -1
对int型移位,移位数只有低5位有效。同理,long类型移位时,移位数只有低6位有效。