统计一个数二进制表示中1的个数
来源:互联网 发布:80端口开启 编辑:程序博客网 时间:2024/05/16 05:48
比如,8的二进制表示为1000,则1的个数为1
实现原理:一个数n,n&n-1的结果等价于将n的二进制表示中最右的一个1变成0.
例如:9(1001),9&8 = 1001 & 1000 = 1000,1001最右边的1变成了0
实现如下:
运行结果如下:#include<iostream>#include<stack>using namespace std;class Binary{public: Binary(int n):n(n){} void binaryDisplay(); void countOne();private: int n;};void Binary::binaryDisplay(){ if(n<0){ cout<<"not considered"<<endl; return ; } stack<int> bit; int quotient=0,dividedevenly=n; while((quotient = dividedevenly / 2) != 0){ bit.push(dividedevenly % 2); dividedevenly = quotient; } bit.push(dividedevenly % 2); while(!bit.empty()){ cout<<bit.top(); bit.pop(); } cout<<endl;}void Binary::countOne(){ int m=n; if(m<0){ cout<<"not considered"<<endl; return ; } int count=0; while(m){ m &= m-1; count++; } cout<<"number of 1: "<<count<<endl;}int main(){ Binary b(0); b.binaryDisplay(); b.countOne(); cout<<endl; Binary b1(9); b1.binaryDisplay(); b1.countOne(); cout<<endl; Binary b2(-5); b2.binaryDisplay(); b2.countOne(); return 0;}
上述代码中尚未考虑负数的情况,其中栈仅仅是用来显示该数的二进制表示。
- 统计一个数的二进制表示中1的个数
- 统计一个数二进制表示中1的个数
- 统计一个数的二进制表示时1的个数
- 统计数x的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 计算一个数的二进制表示中1的个数
- 求一个数二进制表示中1的个数
- 统计一个二进制数中1的个数
- 【C语言】统计一个数二进制中1的个数
- 统计一个数二进制形式中1的个数
- 统计二进制数中1的个数
- 统计二进制数中1 的个数
- 统计二进制数中1的个数
- 统计二进制数中1的个数
- 【二进制】求一个数的二进制表示中1的个数
- 统计一个整数n的二进制表示中1的个数的几种解法
- 汇编程序:统计一个字的二进制表示中1的个数
- 实例讲解seo实战操作(五)
- 第九周实践上机项目——构造菜单
- #J2EE之Servlet#——入门篇:JDK&Tomcat 开发环境搭建和配置
- 第九周上机实践
- 一个简单的server和client程序
- 统计一个数二进制表示中1的个数
- 根据页面edittext的内容控制按钮可点击状态
- 如何在DOS窗口中显示UTF-8字符
- [转载]如何选择走过你生命中的100个女孩@http://blog.csdn.net/jinzheng069/article/details/12947789
- php 解决表单重复提交实现方法介绍
- java 创建临时临时文件
- android nodejs
- 加不加油问题
- 判断某月份有多少天