1.4
求一个数的二进制中1的个数
1000
-1
0111
——————————
1001
-1
1000
-1
0111
__________________
10100
-1
10011 10100&10011=10000 1次
10000
-1
01111 10000&01111=0 2次
__________________
111
-1
110 111&110=110 1次
110
-1
101 110&101=100 2次(每次都消掉一个1)
100
-1
011 100&011=0 3次
#include <stdio.h> int main(){ int n = 7; int num = 0; while(n!=0){ n = ((n-1)&n); num++; } printf("%d\n", num); return 0; }