求二进制中1 的个数 及扩展问题
2013-05-30 09:13
190 查看
#include<stdio.h> /* 求num 二进制中1 的个数,复杂度为o(count) , num&(num-1) 每次消除右起第一个1 考虑 num=1110 num-1=1101 num&(num-1)=1100 */ int numCount(int num) { int count = 0; while(num) { num&=(num-1); // 将num 右起第一个 1 给消除掉 count++; } return count; } int main() { int num; while(scanf("%d",&num)!=EOF) printf("%d\n",numCount(num)); return 0; }
扩展问题2
#include<stdio.h>
/*
给定两个整数A,B ,那么把A变成B需要改变多少位(bit) ?
也是求A B 的二进制的形式有多少不同的
那么将A ,B 异或之后得到C ,求C的二进制中有多少个1(相同的0)
*/
int numChange(int A,int B)
{
int C = A^B;
int count=0;
while(C)
{
C &= (C-1) ;
count++;
}
return count;
}
int main()
{
int A ,B;
while(scanf("%d %d",&A,&B)!=EOF)
{
printf("%d\n",numChange(A,B));
}
return 0;
}
相关文章推荐
- 编程之美 2.7 最大公约数 扩展问题之逆转一个整数的二进制表示
- 二进制扩展求二进制中1 的个数 及扩展问题
- 0710编程之美二进制扩展问题
- mac 升级到mavericks 安装php扩展现问题
- 小球称重问题扩展
- SQL 范围查询问题遇见与扩展学习 IN; NOT IN; NOT EXISTS;BETWEEN AND
- 一键安装lnmp后添加php扩展问题
- JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)
- 编程之美2.10扩展问题求数组中第二大数
- 背包问题扩展
- 使用brew安装扩展出现不兼容问题
- 小波变换中的信号扩展(延拓)问题
- Puppet扩展篇2-如何使用虚拟资源解决puppet冲突问题
- 机器中float的二进制舍入问题
- 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题
- wampserver2.5下安装memcache扩展的问题
- 表空间问题----收缩空间方法:表空间中表的查法:扩展表空间
- 编程之美 NIM(1)扩展问题
- I学霸官方免费教程二(拓展):关于解决新建文件没有扩展名的问题
- 这类问题需要利用二进制的特殊性