《剑指offer》学习笔记_面试题15_二进制中1的个数
-
1.解法1
int NumberOf1(int n){
int count = 0;
unsigned int flag = 1;
while(flag){//当flag中的1移到越界后,flag值会转变为0
//当n&flag不为0时,表示当前flag中1对应的位置不为0
if(n&flag)count++;
flag = flag<<1;
}
return count;
}
-
2.解法2
int NumberOf1(int n){
int count=0;
while(n){
count++;
n = n&(n-1);
}
return count;
}