基本内容
按位与(&)
参加运算的两个二进制数,同时为1,才为1,否则为0。举例 3&5=1。

按位或(|)
参加运算的两个二进制数,一个为1就为1,否则为0。2 | 4=6
按位异或(^)
参加运算的两个二进制数,位不同则为1,位相同则为0。6^7=1

按位非(~)
需要一个操作数,非运算会将该数的底层二进制码(补码)取反。~ -5 =4
链接:详细位运算
注意:右移除以2
注意:左移乘以2
装逼技巧:
1.如果把 n 以二进制的形式展示的话,其实我们只需要判断最后一个二进制位是 1 还是 0 就行了,如果是 1 的话,代表是奇数,如果是 0 则代表是偶数,所以采用位运算的方式的话,代码如下:
判断一个数是奇数还是偶数
if(n & 1 == 1){
// n 是个奇数。
}
基与2进制进行比较
3&5=1 按位与 同位相同则为1
2.交换两位数
x = x ^ y // (1)
y = x ^ y // (2)
x = x ^ y // (3)
按位异或 位不同则为一
3.寻找不重复的数字(只适合在最多两次相同的也串数字)
int find(int[] arr){
int tmp = arr[0];
for(int i = 1;i < arr.length; i++){
tmp = tmp ^ arr[i];
}
return tmp;
}
本文探讨了二进制位运算的四个基本操作:按位与(&), 按位或(|), 按位异或(^)和按位非(~),并展示了如何通过位运算判断奇偶性、交换数字、查找不重复数字及快速幂计算。还介绍了如何利用位运算技巧简化代码实现。
6万+





