intlength(int num){int ret =0;if(num >>16==0){
ret +=16;
num <<=16;}if(num >>24==0){
ret +=8;
num <<=8;}if(num >>28==0){
ret +=4;
num <<=4;}if(num >>30==0){
ret +=2;
num <<=2;}if(num >>31==0){
ret +=1;}return ret;}intcount(int num){
num =(num &0x55555555)+((num >>1)&0x55555555);
num =(num &0x33333333)+((num >>2)&0x33333333);
num =(num &0x0f0f0f0f)+((num >>4)&0x0f0f0f0f);
num =(num &0x00ff00ff)+((num >>8)&0x00ff00ff);
num =(num &0x0000ffff)+((num >>16)&0x0000ffff);return num;}
前导0和二进制1个数 int length(int num) { int ret = 0; if (num >> 16 == 0) { ret += 16; num <<= 16; } if (num >> 24 == 0) { ret += 8; num <<= 8; }