ÒªÇó¸ù¾Ý´úÂë·ÖÎö´úÂëµÄ¹¦ÄÜ£º
unsigned int CountOne(unsigned int x){
x = (x & 0¡Á55555555) + (x >> 1 & 0¡Á55555555);
x = (x & 0¡Á33333333) + (x >> 2 & 0¡Á33333333);
x = (x & 0x0f0f0f0f) + (x >> 4 & 0x0f0f0f0f);
x = (x & 0x00ff00ff) + (x >> 8 & 0x00ff00ff);
x = (x & 0x0000ffff) + (x >> 16 & 0x0000ffff);
return x;
}
¾ÍÕâô¶à¡£
¾¹ý¼ìÑ飬ÕâÊǼìÑéµÄ´úÂ룺
#include
using namespace std;
unsigned int CountOne(unsigned int x);
int main(){
unsigned int x;
cout<<¡±Input a num and will return the count of one:¡±< cout<<¡±(like input 211,and result:5)¡±< cin>>x;
cout<<¡±result:¡±< cout< return 0;
}
unsigned int CountOne(unsigned int x){
x = (x & 0¡Á55555555) + (x >> 1 & 0¡Á55555555);
x = (x & 0¡Á33333333) + (x >> 2 & 0¡Á33333333);
x = (x & 0x0f0f0f0f) + (x >> 4 & 0x0f0f0f0f);
x = (x & 0x00ff00ff) + (x >> 8 & 0x00ff00ff);
x = (x & 0x0000ffff) + (x >> 16 & 0x0000ffff);
return x;
}
¸Ãº¯Êý¾ÍÊǼÆËãÒ»¸ö32λÎÞ·ûºÅÕûÊýÖк¬ÓÐ1µÄ¸öÊý£¬¾Í5ÐдúÂë¡£