可能的重复:
计算快速对数以 2 为底的上限 https://stackoverflow.com/questions/3272424/compute-fast-log-base-2-ceiling
在 C/C++ 中,找出特定整数从十进制转换为二进制时有多少个二进制数字的最快方法是什么?
Ex. 47(10) = 101111(2)
所以47有6位二进制表示。
要获得一种无需调用数学函数即可快速有趣的方法,请查看以下方法:
for (digits = 0; val > 0; val >>= 1)
digits++;
作为奖励,这应该减少内存负载和 2 个寄存器的使用,以获得额外的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)