c - 有没有简单的方法可以得到一个数的2的幂?

标签 c

如果我确定一个数字是 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/

相关文章:

c - 在结构中引用结构,在函数中引用结构

没有参数的 c optarg atoi

c - 为什么我们可以在数组中插入比数组所能容纳的更多的元素

java - 包中包含 .java 文件的 Eclipse JNI

c - 在 C 中实现通用链表库时的内存管理

c++ - 与从变量中简单读取相比,具有 memory_order_relaxed 的 atomic_load() 是否会引入任何额外的开销?

c - 段错误: cache lab

c - C语言中如何将变量中的字符放入数组中?

C - Ncurses - 如何阻止光标越过墙壁(由一堆字符组成的墙壁)

无法将地址传递给指针