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

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

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 山东

相关推荐

下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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