• 注册
当前位置:1313e > 默认分类 >正文

快速的判断一个数的二进制中有多少个1

x=x&(x-1)
 
表达式的意思就是:把x的二进制表示 从低位开始,将遇到的第一个为1的比特位 置0。



例如:


e1:
x = 01001000
x-1 = 01000111
x&(x-1)=01000000


e2:
x = 01001001
x-1 = 01001000
x&(x-1)=01001000


在循环中利用该表达式可以快速的判断一个数的二进制中有多少个1。


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


x=x&(x-1)还可以快速判断x是不是2^n。当x为unsigned类型的变量,且其值为2的n次幂的时候,结果为零。

参考:https://blog.csdn.net/qq_20801369/article/details/52424862

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录