判断任意整数的二进制位中有多少个1
2014-08-11 11:39
183 查看
int func(int x) { int cnt = 0; while(x) { x = x & ( x - 1 ); cnt++; } return cnt; }该方法的时间复杂度是O(m)。
x=x&(x-1)还可以快速判断x是不是2^n。当x为unsigned类型的变量,且其值为2的n次幂的时候,结果为零。
相关文章推荐
- 输入任意3个整数 判断是否能组成三角形 它的面积是多少?
- 答复:“判断一个整数的二进制位中有多少个1”的提问
- 判断一个整数的二进制位中有多少个1
- 给定一个带通配符问号的数W,问号可以代表任意数字。 再给定一个整数X,和W具有同样的长度。 问有多少个整数符合W的形式并且比X大?
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右),某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 1.c中如何用最简洁的代码判断任意整数的位数?
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 小米 机试编程题之 两个整数的二进制位有多少相同
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右),某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 判断一个整数转化成二进制有多少个1
- 《剑指Offer》输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。 为了简单起见,我们假设push序列的任意两个整数都是不相等的
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 使用一个天枰称量100g以下的任意整数重量最少需要多少砝码?每个砝码多少克?(砝码永远只能放在天枰的一边,每个砝码的重量必须是整数)
- 连续整数之和为1000共有多少组(1000可任意设置)
- 判断输入的任意整数m是否为素数。
- 把整数A转化成B,所需要改变的二进制位的个数是多少?
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。