![](/document/image/doc2.gif)
楼主的效率最高......... ( ccsz_ch 发表于 2006-1-13 10:36:00)
![](/document/image/doc2.gif)
calc1 proc n
mov edx,n
xor eax,eax
.while edx
shr edx,1
adc eax,0
.endw
ret
calc1 endp ( 鬼龙之舞 发表于 2005-5-3 23:02:00)
![](/document/image/doc2.gif)
int bits(unsigned int x )
{
static unsigned int mask[] = { 0x55555555,
0x33333333,
0x0F0F0F0F,
0x00FF00FF,
0x0000FFFF };
int i ;
int shift ;
for ( i=0, shift=1; i<5; i++, shift*=2 )
{
x = (x&mask[i])+((x>>shift)&mask[i]);
}
return x;
} ( du51 发表于 2005-4-28 2:37:00)
![](/document/image/doc2.gif)
也可以切成四个8bit用查找表算法,估计统计效率更高:
const byte table[256]={...};
int func(int x)
{
byte *p=(byte*)&x;
return table[p[0]]+table[p[1]]+table[p[2]]+table[p[3]];
;
}
( sagas 发表于 2005-1-14 8:41:00)
![](/document/image/doc2.gif)
还是原来算法效率高啊。 ( sagas 发表于 2005-1-14 8:35:00)
![](/document/image/doc2.gif)
用移位算法不是更简洁吗?
int func(int x)
{
int countx = 0;
for(int i=0;i<32;i++){
if((x>>i)&1)
countx ++;
}
return countx;
} ( nscboy 发表于 2005-1-12 13:35:00)
.......................................................
--------------------next---------------------
阅读(182) | 评论(0) | 转发(0) |