只有整型才能进行位移操作,byte 和 short 会转型为 int 再进行位移运算。
1、左移运算符 <<
- 把操作数转化成二进制(计算机中就是二进制),按位向左移动,右边补
0
。 - 第1位是符号位,因此左移的时候可能会导致符号变化。
- 进行位操作之前会把移位数对32取模,Java 的 int 类型表示为32位,如果要左移32位,则等于不位移。
- 左移一位相当于
乘2
,不过要注意可能会溢出。
2、右移运算符 >>
- 右移操作按位向右移动,左边补
符号位
。 - 进行位操作之前会把移位数对32取模。
- 右移一位相当于
除2
。
3、无符号右移 >>>
右移操作按位向右移动,左边补0
。