免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: connet
打印 上一主题 下一主题

[算法] 向“世界上最快的判断32位整数二进制中1的个数的算法”挑战 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-07-20 09:51 |显示全部楼层
是不错,

但估什不一定能比他贴的这个方法快

  1. unsigned int func(unsigned int x)
  2. {
  3.     x = (x & 0x55555555UL) + ((x >> 1) & 0x55555555UL); // 0-2 in 2 bits
  4.     x = (x & 0x33333333UL) + ((x >> 2) & 0x33333333UL); // 0-4 in 4 bits
  5. #if 1
  6.     // Version 1
  7.     x = (x & 0x0f0f0f0fUL) + ((x >> 4) & 0x0f0f0f0fUL); // 0-8 in 8 bits
  8.     x = (x & 0x00ff00ffUL) + ((x >> 8) & 0x00ff00ffUL); // 0-16 in 16 bits
  9.     x = (x & 0x0000ffffUL) + ((x >> 16) & 0x0000ffffUL); // 0-31 in 32 bits
  10.     return x;
  11. #else
  12.     // Version 2
  13.     x = (x + (x >> 4)) & 0x0f0f0f0fUL; // 0-8 in 4 bits
  14.     x += x >> 8; // 0-16 in 8 bits
  15.     x += x >> 16; // 0-32 in 8 bits
  16.     return x & 0xff;
  17. #endif
  18. }
复制代码


测试一下看看

论坛徽章:
0
2 [报告]
发表于 2006-07-20 18:01 |显示全部楼层


这样做没什么意义吧~

适当则可了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP