如何获得最小的N,即2 ^ N> = O型的定整X X(1)? [英] How get smallest n, that 2 ^ n >= x for given integer x in O(1)?

查看:93
本文介绍了如何获得最小的N,即2 ^ N> = O型的定整X X(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 ^ nx 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 )来实现的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆