【微创】求整数的二进制表示中有多少个1
来源:互联网 发布:网络著名小说作家 编辑:程序博客网 时间:2024/05/20 02:27
现有一整数n,求n用二进制表示中有多少个1?
解法一的步骤:
(1)判定n是否为0,若为0,计算结束;否则继续计算
(2)取n mod 2的值,若为1,计数器加1
(3)对n进行除2,并返回到步骤(1)
代码如下:
int count1Bits(int n){ int count = 0; int mod = 0; //假设需要考虑负数 if (0 > n) { n = -n; } while (0 != n) { mod = n % 2; n /= 2; if (1 == mod) { count++; } } return count;}
解法二:先来看这样一个现象,任何不等于0的整数转化为二进制后至少有一个1,现假设n不等于0,把n拆成两部分:n1n2,n2为低位首次出现1的右面部分(包括首次出现1的Bit位),n1为剩余部分。比如n为11011000,则n1为1101,n2为1000,对n2减1为0111,n2 = n2 & (n2 - 1) = 1000 & 0111 = 0000,则n变为11010000。发现按以上方法每操作一次,n就少一个1,不停循环以上的方法,直到n变为0,循环了几次就表示n有多少个1.
代码如下:
int count1Bits(int n){ int count = 0; //假设需要考虑负数 if (0 > n) { n = -n; } while (0 != n) { n &= n - 1; count++; } return count;}
- 【微创】求整数的二进制表示中有多少个1
- 输入一个整数,求该整数的二进制表示中有多少个1
- 求整数 在二进制表示中有多少个1的方法
- 整数的二进制表示中有多少个1
- 求整数的二进制表达中有多少个1
- Java算法总结:输入一个整数,求该整数的二进制表示中有多少个1
- 给定一个整数N,求N!末尾有多少个0?N!的二进制表示中最低1的位置?
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数,求该整数的二进制表达中有多少个1
- 输入一个整数,求该整数的二进制表达中有多少个1
- 整数的二进制表示中有多少个1的问题
- 位操作:一个整数的二进制表示中 有多少个1?
- 32位整数的二进制表示中有多少个1
- 求整数A和整数B的二进制表示中有多少位是不同的?
- 求一个数的二进制表示中,有多少个1的问题
- 求一个unsigned int 数的二进制表示中有多少个1?
- 求一个unsigned int 数的二进制表示中有多少个1?
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?求N!的二进制表示中最低位1的位置。
- Android开发01——控件的使用,四则运算
- 在i386平台Linux 2.6 上实现一个系统调用
- Android——动态加载布局
- Winsock IO模型之Overlapped模型
- comzic scanner
- 【微创】求整数的二进制表示中有多少个1
- 用VC编程阻止全局钩子的加载.
- Linux core 文件介绍
- 看到的一个指针的问题。。。帮助复习了。。
- POJ 2499 求二叉树结点到根结点的路径长度 递归 二叉树
- 关于算法中的并查集,写的很有意思,转过来看看~
- 这就是我
- java记事本
- trustware