剑指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;
    }
}



posted @ 2021-09-21 12:59  程序员khaos  阅读(28)  评论(0编辑  收藏  举报