判断输入的一个整数有多少位是1,效率要高
2017-03-03 19:58
162 查看
方法一:判断有多少个1,可以将一个数不断的和1相与,之后将此数的二进制向右移动一位这样就可以判断有多少个一
public int getSum(int n){
int count = 0;
if(n&1){
count++;
}
return count;
}
方法二:一个整数减去一,然后和之前的数作与运算,会把当前整数的二进制最右边的1变成0,那么就是运算几次就有几个1
public int getSum(int n){
int count = 0;
while(n){
count++;
n = n&(n-1);
}
return count;
}
public int getSum(int n){
int count = 0;
if(n&1){
count++;
}
return count;
}
方法二:一个整数减去一,然后和之前的数作与运算,会把当前整数的二进制最右边的1变成0,那么就是运算几次就有几个1
public int getSum(int n){
int count = 0;
while(n){
count++;
n = n&(n-1);
}
return count;
}
相关文章推荐
- 判断一个整数的二进制位中有多少个1
- 输入一个整数,判断它的奇偶性后输出结果。
- 编写一个判断素数的函数,在主函数输入一个整数时,输出是否素数的信息。
- java 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 判断输入的一个非负的正整数,其是否是2的幂
- 输入一个整数,判断它的奇偶性后输出结果。
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 今天遇到了一个问题,怎么判断你输入的数是整数 ----2012.6.28
- 【练习】输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序
- PHP 输入两个整数序列。其中一个序列表示栈的push 顺序, 判断另一个序列有没有可能是对应的pop 顺序
- 输入一个整数n,判断这个数是否质数
- 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 判断一个整数转化成二进制有多少个1
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 每天学习一算法系列(26)(输入一个整数,求该整数的二进制表达中有多少个1)
- 每天学习一算法系列(27)(输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序)
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 输入任意3个整数 判断是否能组成三角形 它的面积是多少?