while(x){ if(x&1)k++; x>>=1; }
while(x){ x-=x&-x; cnt++; }
(x>>0&1) //0号位
(x>>1&1) //1号位
(x>>2&1) //2号位
//...
for(int i=0;i<31;i++){ if(x>>i&1){ k++; } }
while(x){ x=x&x-1; k++; }
printf("%d",x>>k&1);
x&(1<<k)-1
即:
0->1
1->0
x^(1<<k)
x|(1<<k)
x&(~(1<<k))
~x
表示把x
取反