Java 定义了位运算符,应用于byte,short,int,long,char这样的整数类型。
位运算时先转换为二进制补码,再按位运算。
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 按位左移 高位移出,低位补0。移动位数超过该类型的最大位数,则进行取模,如对int左移34位,实际上只移动了两位。
>> 按位右移(算术右移) 高位补符号位,低位移出
>>> 按位右移(逻辑右移) 高位补0,低位移出
移位运算理清补码和原码之间的关系:
计算机按照补码形式来存储数字的,故移位运算是对补码进行的。
负数原码转补码,补码转原码的规则相同:符号位不变,数值位取反+1。正数的原码反码补码相同。