《剑指Offer》11二进制中1的个数
题目:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
思路其实挺简单的,把n和1做与运算,判断n的最低位是不是为1.接着把1左移一位得到2,再和n做与运算,
就能判断n的次低位是不是1......
public class Solution {
public int NumberOf1(int n) {
int count=0;
int flag=1;
while(flag!=0) {
if ((n&flag)!=0) {
count++;
}
flag=flag<<1;
}
return count;
}
} 在上面这个解法中,循环的次数等于整数二进制的位数,32位的整数需要循环32次。
还有一种算法,整数中有几个1就只需要循环几次。以后如果有时间再写。
查看22道真题和解析
