题解 | #懂二进制#

懂二进制

http://www.nowcoder.com/practice/120e406db3fd46f09d55d59093f13dd8

思路:二进制不同位,直接采用异或,然后采用循环右移计算1的个数即可。

Java:

public class Solution {
    public int countBitDiff (int m, int n) {
        int c = m^n;
        int count = 0;
        while(c != 0){
            count += c & 1;
            c = c >> 1;
        }
        return count;
    }
}

C++:

class Solution {
public:
    int countBitDiff(int m, int n) {
        int count = 0;
        m = m ^ n;
        for(int i = 0; i < 32; ++i){
             count += (m >> i) & 1;
        }
        return count;
    }
};
全部评论
🐂啊,我还专门百度了下异或运算符咋用,😣
点赞 回复 分享
发布于 2022-10-18 17:56 北京

相关推荐

评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务