gpt4 book ai didi

c++ - 需要帮助理解代码以计算设置为 1 的位

转载 作者:行者123 更新时间:2023-11-28 08:09:15 26 4
gpt4 key购买 nike

我遇到了 a StackOverflow answer给出以下代码以有效计算 32 位 int 中设置为 1 的位数:

int NumberOfSetBits(int i)
{
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}

但我在理解这一点时遇到了很多问题。我找不到它所在的链接正确解释。谁能帮我理解这段代码,或者提供一个可能更有帮助的链接?

最佳答案

有点间接地回答:Henry Warren 的“Hacker's Delight”一书是一个很好的引用,它说明了像这样(以及其他数百个)这样的微调例程是如何工作的。我强烈推荐它——它属于每个程序员的书架。 http://www.amazon.com/Hackers-Delight-Henry-S-Warren/dp/0201914654

关于c++ - 需要帮助理解代码以计算设置为 1 的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com