码迷,mamicode.com
首页 > 其他好文 > 详细

如何知道一个十位数的二进制有多少个1

时间:2014-10-17 06:49:14      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:如何知道一个十位数的二进制有多少个1

按位与:a&b是把a和b都转换成二进制数然后再进行与的运算;
逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。 


 x=9999 

 int func(x) 

    int countx = 0; 
    while(x) 
    { 
          countx ++; 
          x = x&(x-1); 
     } 
    return countx; 
}  


x = 9999 时,x-1=9998,用二进制表示

10011100001111

10011100001110

当他们执行&运算并赋值给x,结果x为

10011100001110

此时x-1为

10011100001101

当他们执行&运算并赋值给x,结果x为

10011100001100

如此类推到结果为00000000000000,应该发现x = x&(x-1)就是将x最右边的二进制位1变为0。x为9999时二进制为1的位有8个,所以结果为8


本文出自 “DamenMai学习之路” 博客,转载请与作者联系!

如何知道一个十位数的二进制有多少个1

标签:如何知道一个十位数的二进制有多少个1

原文地址:http://9492221.blog.51cto.com/9482221/1564960

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!