题解 | #二进制中1的个数#
二进制中1的个数
https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
//方法1 //int NumberOf1(unsigned int n ) //{ // int count = 0; // while(n) // { // if ( 1==n%2) // { // count++; // } // n=n/2; // } // return count; //} //方法2 //int NumberOf1(unsigned int n ) //{ // int count = 0; // for(int i = 0;i<32;i++)//一共32位,循环32次 // { // if((n&1)==1) //00000000000000000000000000000001----1的补码 //00000000000000000000000000001010----10的补码 //00000000000000000000000000000000----10&1==0 //00000000000000000000000000000101----10>>1 //00000000000000000000000000000001----(10>>1)&1==1 count+1 //测一位右移有一位 // { // count++; // } // n = n>>1; // } // return count; //} //方法3 int NumberOf1(unsigned int n ) { int count = 0; while(n) { //00000000000000000000000000001010----10的补码----n=10 //00000000000000000000000000001001----(10-1)的补码 //00000000000000000000000000001000----10&(10-1)==8---n=8 //00000000000000000000000000000111----(8-1) //00000000000000000000000000000000----0 n=n&(n-1); count++; } return count; }