需要帮助理解将位数设置为1的代码
Need help understanding code to count bits set to 1
我遇到了一个StackOverflow答案,它给出了以下代码,可以有效地计算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的《黑客的喜悦》一书很好地参考了像这样(以及其他数百种)的小程序是如何工作的。我强烈推荐它——它属于每个程序员的书架。http://www.amazon.com/Hackers-Delight-Henry-S-Warren/dp/0201914654
相关文章:
- 如何在大型c++项目的可视化代码中设置调试
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- 针对代码::块设置的 SFML 故障排除
- 使用代码在 AWS 开发工具包C++控制台应用程序上设置凭证
- 如何使用跨平台代码在C++中设置系统时间?
- 代码在 msvcrt .dll函数上设置断点失败
- 如何在 curl 代码C++设置授权持有者标头?我得到的授权不足,即使它在命令行上工作
- 如何为用户设置仅输入 4 位代码的限制?
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- 设置Qt Creator以链接和编译汇编代码
- 如何设置cmakelists.txt文件以启动和运行Xtensor-python示例代码
- 设置c 代码示例,带有sqlite3不起作用
- Imgui,SDL2和代码块,难以设置
- 通过程序代码行设置C++包含路径
- 如何在Visual Studio中设置C /C代码仅在一个线程中运行以测试运行时间
- OSX OpenGL设置代码中的种族条件
- 如何设置代码::块的目录
- 预先设置c++代码的执行时间
- 设置代码::带Qt的块
- 设置C++代码中while循环的执行速率以进行实时同步