剑指offer计划21( 位运算简单)---java
1.1、题目1
剑指 Offer 15. 二进制中1的个数
1.2、解法
通过判断每一位的与来识别1的数量。
1.3、代码
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int res=0;
for(int i=0;i<32;i++){
if((n & (1 << i))!=0) res++;
}
return res;
}
}
2.1、题目2
剑指 Offer 65. 不用加减乘除做加法
2.2、解法
第一次做位运算的算法,直接看题解,找思路~~
两道题的解法都很有趣,之前都没用到过这些东西, 这些在嵌入式应该比较经常用上。
2.3、代码
class Solution {
public int add(int a, int b) {
while(b != 0) { // 当进位为 0 时跳出
int c = (a & b) << 1; // c = 进位
a ^= b; // a = 非进位和
b = c; // b = 进位
}
return a;
}
}