1.与运算符:&
-
两个操作数中位都为1,结果才为1,否则结果为0(二进制)
int a=129; int b=128; System.out.println("a 和b 与的结果是:"+(a&b)); a 和b 与的结果是:128 -
Brian Kernighan 算法:x=x & (x−1) 将x的二进制最后一个消去,以此来记录x中1的个数
-
i&(i-1))==0 来判断i是否为2的幂此数
-
i&1 如果i为偶数那么 i&1=0;i为奇数那么 i&1=1
2.或运算符:|
- 两个位只要有一个为1,那么结果就是1,否则就为0
3.非运算符:~
- 如果位为0,结果是1,如果位为1,结果是0
4.异或运算符:^
- 两个操作数的位中,相同则结果为0,不同则结果为1
- 如:判断数组中只出现一次的数
5.Java中的<< 和 >> 和 >>> :
# <<表示左移,不分正负数,低位补0;
# >>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
----例: i>>1消去最低有效位
# >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0