如何获得最小的N,即2 ^ N> = O型的定整X X(1)? [英] How get smallest n, that 2 ^ n >= x for given integer x in O(1)?
问题描述
如何在给定的无符号整数 X
找到最小的n,即 2的n次方
≥ X
在O(1)?换句话说,我想找到一个更高的设定位指数在二进制格式X
(加1,如果 X
是没有权力2)O(1)(不依赖于整数和字节大小)的大小。
How for given unsigned integer x
find the smallest n, that 2 ^ n
≥ x
in O(1)? in other words I want to find the index of higher set bit in binary format of x
(plus 1 if x
is not power of 2) in O(1) (not depended on size of integer and size of byte).
推荐答案
如果你没有内存限制,那么你可以使用一个查找表(适用 X $ C每个可能值一个条目$ C>)来实现的 O(1)的时间。
If you have no memory constraints, then you can use a lookup table (one entry for each possible value of x
) to achieve O(1) time.
如果你想有一个实用的解决方案,大多数处理器将拥有某种找到最高位的OP code。在x86上,例如,它的 BSR
。大多数编译器将有一个机制来编写原始汇编。
If you want a practical solution, most processors will have some kind of "find highest bit set" opcode. On x86, for instance, it's BSR
. Most compilers will have a mechanism to write raw assembler.
这篇关于如何获得最小的N,即2 ^ N> = O型的定整X X(1)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!