是否有任何快速算法来计算所有2的幂数的log2?

Wen*_*.Wu 4 c algorithm math

是否有任何快速算法来计算log2的所有2的幂,例如:

log2(1), log2(2), log2(4), log2(1024), log2(4096)...
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用它来实现位集迭代.

Bry*_*hen 18

假设您知道数字必须是2的幂,所以在二进制中,它1跟随n 0,其中n是您要查找的数字.

如果你使用gcc或clang,你可以使用内置函数

- 内置函数:int __builtin_ctz(unsigned int x)

返回x中的尾随0位数,从最低有效位开始.如果x为0,则结果未定义.

对于纯C实现,它已经得到了回答

在二进制数中查找尾随0