求二进制中1 的个数
来源:互联网 发布:新手开淘宝店用多少钱 编辑:程序博客网 时间:2024/06/05 09:26
问题描述:
实现一个函数,输入一个整数,求这个整数的二进制中1的个数。
方法1
每次让最右边的以为& 1,然后将这个数右移一位,当这个数为0的时候停止。
//缺点负数重1的个数不能求出,会陷入死循环
int NumOf1(int x){ int count = 0; while (x) { if (x & 1 == 1) { count++; } x >>= 1; //运算效率比除高 } return count;}
方法二:
//缺点:需要循环32次但可以找出负数中1的个数int NumOf1(int x){ int count = 0; int i = 0; while (i<32) { if (x & 1 == 1) { count++; } x >>= 1; //运算效率比除高 i++; } return count;}
方法三、
//缺点:需要循环32次但可以找出负数中1的个数int NumOf1(int x){ int count = 0; int i = 0; int flag = 1; while (flag) { if (x & flag) { count++; } flag <<=1; } return count;}
方法四、
原理:把一个整数减去一,再和原来的整数做与运算会把这个整数最右边的一个一变成0.
int NumOf1(int x){ int count = 0; while (x) { count++; x &= (x - 1); } return count;}
0 0
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制中1的个数
- 求二进制数中1的个数
- 求二进制数中 1 的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- “求二进制数中1的个数”
- 求二进制中1 的个数
- Python 使用 urllib2 防止302跳转
- 架构师
- 华为2016校园招聘上机笔试题----最高分是多少
- java进阶(七)------多线程---多线程操作同一变量
- iOS GPUImage之自定义滤镜
- 求二进制中1 的个数
- 启用windows防火墙:允许记录日志
- 第1部分Greenplum 架构
- TYVJ 2002 扑克牌
- shell 笔记
- PHP复制文件夹
- mysql 备份脚本
- 父子进程通信
- 在centos 7 上安装mysql