今天在做题的时候遇到了这个算法。求数值n的二进制表示中1的个数。
>>位运算符
void count(int n){
unsigned int tmp = n - ((n >> 1)&033333333333) - ((n >> 2)&011111111111);
std::cout << ((tmp+(tmp>>3))&030707070707)%63 << std::endl;
}
今天在做题的时候遇到了这个算法。求数值n的二进制表示中1的个数。
>>位运算符
void count(int n){
unsigned int tmp = n - ((n >> 1)&033333333333) - ((n >> 2)&011111111111);
std::cout << ((tmp+(tmp>>3))&030707070707)%63 << std::endl;
}