如果我确定一个数字是 2 的幂,有没有办法获得该数字是 2 的哪个幂?我想到了这个想法: 进行计数并将数字右移 1 并递增计数直到数字为 0。但是还有其他方法吗?不保留计数器?
编辑: 这里有些例子: 8 -> 返回 3 16 -> 返回 4 32 -> 返回 5
最佳答案
最优雅的方法是 De Bruijn 序列。这是我之前对类似问题的回答,内容是如何使用它们来解决问题:
Bit twiddling: which bit is set?
通常更实用的方法是使用 CPU 的内置指令来查找第一个/最后一个位集。
关于c - 有没有简单的方法可以得到一个数的2的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222732/