首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个计算32位整数中设置位数的算法是如何工作的?

这个计算32位整数中设置位数的算法是如何工作的?
EN

Stack Overflow用户
提问于 2014-02-28 06:16:37
回答 2查看 6.2K关注 0票数 23
int SWAR(unsigned int i)
{
    i = i - ((i >> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
    return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}

我看过这段代码,它计算32位整数中等于1的位数,我注意到它的性能比__builtin_popcount更好,但我不能理解它的工作方式。

有没有人能详细解释一下这段代码是如何工作的?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22081738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档