面试题十五:二进制中1的个数
方法一:位运算 整数与1做&运算,整数右移循环。但是遇到负数会出现死循环;
方法二:位运算 整数与1做&运算,1左移循环;
int f1(int n){ int count=0; int t=1; while(t!=0){ if(t&n==1) count++; t<<=1; } return count; }
方法三:减一法 将整数减去1后,在二进制中从右到左第一个1变0,左边不变,右边变1,结果再和原先整数于起来,循环;
int f2(int n){ int count=0; while(n!=0){ count++; n&=(n-1); } }
浪波激泥