如何用位运算,求某个整数的二进制中有多少个1 共2个红包, 当前剩余0个, 每个1元 互助问答
  • alex121111 等级 N0
    2018-11-01 13:24

    设x是int类型变量,如何用位运算求出x的2进制中有多少个1




    最佳答案请参考 我选出的最佳答案 和昵称为默的这位童鞋的答案,以及我下面补全的答案


    因为操作失误,不小心把两个最佳回答给了一个人,实在是不好意思。(默默同学可以私聊我给你发个红包。。。)


    abc同学的回答如果加上代码也会是最佳回答,但是他回答的不够全,所以我在这里补全一下



    int x, cnt = 0;

    scanf("%d", &x);

    while (x)

    {

    x = x & (x - 1);

    cnt++;

    }

    //假如x的二进制是1001000则 x-1= 1000111 , x & (x - 1)= 1000000 ,cnt++ == 1

    // x = 1000000  , x - 1 = 0111111 , x & (x - 1)= 0000000, cnt++ == 2

    // x== 0 循环条件不成立,退出循环 ,cnt记录的就是1的个数



  • 浏览 160
  • 点赞 0
  • 分享 9
  • 点赞 已赞 收藏 已收藏
回答 (6)
    正在加载中...
    ---到底了---
    talk 6 top
    展开