位运算符
-
在处理整形数值时,可以直接对组成整形数值的各个位进行操作。这意味着可以使用屏蔽技术获得整数中的各个位(??)
-
&(与)、|(或)、^(异或)、~(非/取反)
-
“>>” 和 “<<” 运算符将二进制位进行右移或者左移操作
-
“>>>” 运算符将用0填充高位;“>>” 运算符用符号位填充高位,没有"<<<"运算符
-
对于int型,1<<35 与 1<<3是相同的,而左边的操作数是long型时需对右侧操作数模64
-
**与:**都为1结果为1,**或:**有一个为1结果为1,**异或:**二者不同时结果为1
位运算的奇技淫巧
-
判断奇偶数
-
获取二进制位是1还是0(两种解决方案)
-
交换两个整数变量的值
-
不用判断语句,求整数的绝对值
- 异或,可以理解为不进位加法:1+1=0 , 0+0=0 , 1+0=1
- 交换律 可任意交换运算因子的位置,结果不变
- 结合律( 即(ab)=c == a(bc) )
- 对于任何数x,都有x^x=0 , x^0=x , 同自己求异或为0,同0求异或为自己
^0=x ,同自己求异或为0,同0求异或为自己 - 自反性 ABB = A^0 = A , 连续和同一个因子做异或运算,或最终结果为自己