位运算分类
逻辑位运算符
位于 &
只有两个都为1
才为1
位 或 |
只要有一个为1
就为1
异或 ^
只有不相同 才为 1,
否则 为 0。
按位取反
位移运算符
左移 <<
左移一位可以看做 该数 乘2了
右移 >>
左移一位可以看做 该数 除2了
但是注意 如果 该数 是正数, 左边补0
如果 该数 是负数,左边补1.
实战leetcode
https://leetcode.cn/problems/add-two-integers/
2235 两数求和
代码
class Solution{
public int sum (int num1, int num2){
if (num2 == 0){
return num1;
}
int add_xor = num1 ^ num2; // sum result without carry
int add_carry = (num1 & num2) << 1; // summ reult only about carry
return sum(add_xor,add_carry);
}
}
Reference
https://www.bilibili.com/video/BV1YT4y117AH/?spm_id_from=333.788.recommend_more_video.0&vd_source=8d8fef6cad2875d6b6b4c08c3a9ac66d