求二进制中1的个数
来源:互联网 发布:杭州软件信息技术开发 编辑:程序博客网 时间:2024/06/05 07:53
题目描述:
对于一个字节(8bit)的变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能的高。
解法一:
除以一个2,原来的数字将减少一个0,如果除的过程中有余,那么就表示当前位置有一个1.
代码如下:
int Count(int v){
int num=0;
while (v)
{
if (v%2==1)
num++;
v=v/2;
}
return num;
}
解法二:
int Count(int v)
{
int num=0;
while (v)
{
num+=v&0X01;
v>>=1;
}
return num;
}
{
int num=0;
while (v)
{
num+=v&0X01;
v>>=1;
}
return num;
}
复杂度为O(log2v),log2v为二进制的位数。
解法三:
只考虑有1的情况
int Count(int v)
{
int num=0;
while (v)
{
v&=(v-1);
num++;
}
return num;
}
{
int num=0;
while (v)
{
v&=(v-1);
num++;
}
return num;
}
时间复杂度为O(M),M是v中1的个数。
0 0
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制中1的个数
- 求二进制数中1的个数
- 求二进制数中 1 的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- “求二进制数中1的个数”
- 求二进制中1 的个数
- VR眼镜探究
- Structs2 HelloWorld-01 环境搭建
- JAVA 命名规则
- 微信备份功能
- 多个Activity之间共享数据
- 求二进制中1的个数
- linux下使用code::block报c99错误解决方法
- 北大先修课参赛总结
- poj 1062 昂贵的聘礼 【枚举最短路】
- contiki进程管理
- linux上搭建mpich+ecllipse环境
- php验证码
- 【PCL】x64+VS2010+PCL1.7.1及其第三方库的安装编译过程
- 基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)