数值转化成二进制后包含1的数量
来源:互联网 发布:象棋比赛软件 编辑:程序博客网 时间:2024/05/04 07:33
#include <iostream>using namespace std;int func(int x){ int count = 0; while(x) { count++; x = x&(x-1); } return count;}int main(){ cout<<func(9999)<<endl; //怎么算出9999转换成二进制有多少位为1呢,有简便算法吗 return 0;}
其实,最关键的部分就是“x &= x -1; ”说明:不管二进制是什么,减1就会从右到左把0变为1,直至碰见1,把1变为0才结束.
如果x=x&(x-1), 就是把从左到右连续的0都变为1,并且遇到的第一个1变为0!
举例:10010100000 减1 就是:10010011111 ,再“&”就等于 10010000000
这样循环一次,就是把最右边的1变为零。
有多少个1,就循环多少次。直到最后x的值变为0。
0 0
- 数值转化成二进制后包含1的数量
- 计算x转化成二进制包含1的数量
- 求一个数转化成二进制之后包含1的数量
- 计算X转为二进制后,包含1的数量
- 二进制中包含1的数量
- 一个整数转化为二进制数后包含1的个数
- 计算整数的二进制中包含1的数量
- 求数字转化为二进制后1的个数
- 求一个数转化为二进制后1的个数
- 确定一个数转化成二进制后是1的位的个数
- 无聊的测试-计算某数值转化为二进制时 含1的个数
- 求一个十进制数转化成二进制后bit为0或1的个数
- 0015求十进制数转化成二进制数后1的个数(程序员面试宝典上例题)
- 用户输入的数字转化为二进制后中数字1的个数
- 求一个无符号整数转化为二进制后1的个数
- 数值的二进制输出
- 数值的二进制输出
- 十进制转化的二进制反转后十进制输出
- CheckBox的使用(一):onCheckedChanged事件
- clang: error: unknown argument: '-mno-fused-madd'
- [Android 开发] xUtils的使用
- 函数里参数被注释掉了
- 关于java继承性的一个实例
- 数值转化成二进制后包含1的数量
- UVA 1468 - Restaurant(推理)
- SSH框架的底层机制及原理
- 【网络流与线性规划24题】【机器人路径规划问题】【IDA*】【题解】
- 面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- C语言基础浅识
- 自己把源码生成jar,在android项目中调用
- DFS——Maze Exploration
- 第六周项目2-对象作为数据成员