快速判断二进制中有多少个1
来源:互联网 发布:pc预测软件 编辑:程序博客网 时间:2024/04/30 08:09
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次幂的时候,结果为零。
表达式的意思就是:把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次幂的时候,结果为零。
0 0
- 快速判断二进制中有多少个1
- 快速的判断一个数的二进制中有多少个1
- 快速的判断一个数的二进制中有多少个1,快速判断x是不是2^n
- 题目:二进制中有多少个1
- 二进制中有多少个1
- 容易 二进制中有多少个1
- 二进制中有多少个1
- 二进制中有多少个1-lintcode
- 二进制中有多少个1
- 二进制中有多少个1
- 二进制中有多少个1
- 二进制中有多少个1
- Lintcode 二进制中有多少个1
- 二进制中有多少个1
- 二进制中有多少个1
- 二进制中有多少个1?
- lintcode:二进制中有多少个1
- Lintcode二进制中有多少个1
- perl进制数转换
- 捷联式惯性导航基础知识(一)
- 使用frp穿透时,jsp中的getServerName()方法获取域名错误
- C语言动态分配二维数组
- windows小技巧
- 快速判断二进制中有多少个1
- Linux sort命令详解
- 支付高并发
- 在Linux下完美运行Windows PC版QQ/TIM教程
- 常见浏览器兼容问题整理(ie9及以上)
- JZ2440 中断分析
- Android-获取手机上的图片、视频、音频
- web性能优化与最佳实践
- 解决mongodb E11000,原子性问题