给定 n = 2^k,假设 n 是 32 位整数,使用 C/C++ 按位如何找到 k?
GCC has __builtin_clz http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html它会转换为 x86/x64 上的 BSR、ARM 上的 CLZ 等,并在硬件未实现该指令时模拟该指令。
Visual C++ 2005 及更高版本有_BitScanReverse http://msdn.microsoft.com/en-us/library/fbxyd7zd%28v=VS.80%29.aspx.
使用这些函数,你可以得到你的 k
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)