题解 | #两个整数二进制位不同个数#

两个整数二进制位不同个数

https://www.nowcoder.com/practice/16e48900851646c0b2c6cdef9d7ea051

#include <stdio.h>

int main() {
    int m, n;
    int count=0;
    scanf("%d %d",&m, &n);
    m = m ^ n;//所有的不同的位置组成的数字
    n = 32;
    while (n--) {//这个结果的运行,到最后必定是为0时停止
        if (m & 1) {
            count++;
        }
        m=m >> 1;
    }
    printf("%d\n", count);
}

这题我怎么感觉有点问题。我的编译器运行出来的是1,但是这个上面运行出来的是5.也不知道是题错了还是我没理解。但是我感觉我的思路是对的。,

全部评论
肯定会多吧
点赞 回复 分享
发布于 2023-11-09 23:05 山东
如果是负数的话,你每次右移结果都会补1
点赞 回复 分享
发布于 2023-11-09 23:05 山东
右移要考虑符号位吧?
点赞 回复 分享
发布于 2023-11-09 23:04 山东

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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