1

我想看看是否有一种方法可以找到数字的二进制日志。假设你有数字 4,那么你加 2 得到 4 的幂是 2。

我知道这可以通过移位和计数来实现,但它使用O(N)操作。有什么办法可以到O(1)任何n地方x = 2^n吗?

我想在n这里找到x一次操作或O(1).

4

1 回答 1

2

当您指定 x86 时,听起来您想要BSR(位扫描反向)操作码,它报告最重要的设置位的位置。

[仅供参考:大O表示法是指渐近复杂性(即N->无穷大);如果 N 有一个有限的限制(在这种情况下为 32 或 64),这没有多大意义。]

于 2013-07-14T23:55:20.233 回答