求2进制中1的个数
来源:互联网 发布:农夫抢购软件 编辑:程序博客网 时间:2024/06/03 12:40
解法1
int Count(unsigned int v){ int num=0; while(v) { num += v & 0x01; v>>=1; } return num;}
算法复杂度log2 v
解法2
int Count(unsigned int v){ int num=0; while(v) { v&=(v-1); num++; } return num;}
算法复杂度O(M),M为1的个数
扩展问题:求两个整数中有多少位是不同的,应用解法1.
int diff(unsigned int a, unsigned int b){ int num=0; while(a && b) { if((a & 0x01 == 0x01) && (b & 0x01 == 0x01)) { num++; } a>>=1; b>>=1; } return num;}
- 求2进制中1的个数
- 求1的个数
- 求一个数2进制中1的个数
- 求2进制数中1的个数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求2个数的最大公约数
- 求1的个数问题
- 求 1 出现的个数
- 2.1求1的个数
- 二进制求1的个数
- C#-----位运算---求16进制中1的个数
- 2的n次幂 求一个数2进制中1的个数
- 题目1491:求1和2的个数
- C#中对象的销毁和内存回收的方式
- android学习笔记asyncTask的多线程异步通信
- vim替换linux文件中的^M
- 获得包含某个时间的范围的函数
- Facebook用斯巴达计划将iPhone变为“Facebook Phone”
- 求2进制中1的个数
- 工作两月粗结
- 豆丁Java面试题
- wince下 listbox读写txt文体
- 无法打开.csproj
- exp/imp导出导入工具的使用
- 数据库连接失败Communications link failure mysql
- 整合struts1.2+spring2.5+hibernate3.2实现简单登录
- KVM 虚拟机在物理主机之间迁移的实现