懂二进制 位运算亦或

题目描述
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
示例1
输入
复制

1999 2299

输出
复制

7

两种写法,本质上是一样的

class Solution {
public:
    /** * 获得两个整形二进制表达位数不同的数量 * * @param m 整数m * @param n 整数n * @return 整型 */
    int countBitDiff(int m, int n) {
#if 0 
        n ^= m; //按位异或后不同的位一定是1,统计出来就行了
        m = 0;
        while(n) {
            m += (n & 1);
            n >>= 1;
        }
        return m;
#else
        int ans = 0;
        while(n || m) {
            ans += ((n&1) != (m&1)); //直接比较
            n >>= 1;
            m >>= 1;
        }
        return ans;
#endif
    }
};
全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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