位运算的运行效率比加减乘除的效率高得多,直接对Bit位进行操作。
符号 | 说明 |
---|---|
& | 与 |
I I | 或 |
^ | 异或 |
~ | 取反 |
<< | 左移 |
>> | 右移 |
左移和右移注意要点
(1)左操作数必须为整数类型,char和short被隐式转换为int后进行移位操作
(2)右操作数的范围必须为∶[0,31]
(3)左移运算符,<<将运算数的二进制位左移,遵循规则︰高位丢弃,低位补0
(4)右移运算符,>>把运算数的二进制位右移,遵循规则︰高位补符号位,低位丢弃
经典例子:
-1>>1,结果是 -1。
-1的补码是 1111 1111 ,右移1位,最高位补符号位1,结果还是1111 1111,所以是-1
1<<2+3,得到32。原因在于左移运算符的优先级低于四则运算的优先级。
小技巧:
√左移n位相当于乘以2的n次方,但效率比数学运算符高
√右移n位相当于除以2的n次方