Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455137
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:24:04


楼主的效率最高......... ( ccsz_ch 发表于 2006-1-13 10:36:00)

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)

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)

也可以切成四个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)

还是原来算法效率高啊。 ( sagas 发表于 2005-1-14 8:35:00)

用移位算法不是更简洁吗?
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) |
给主人留下些什么吧!~~