Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想看看是否有一种方法可以找到数字的二进制日志。假设你有数字 4,那么你加 2 得到 4 的幂是 2。
我知道这可以通过移位和计数来实现,但它使用O(N)操作。有什么办法可以到O(1)任何n地方x = 2^n吗?
O(N)
O(1)
n
x = 2^n
我想在n这里找到x一次操作或O(1).
x
当您指定 x86 时,听起来您想要BSR(位扫描反向)操作码,它报告最重要的设置位的位置。
BSR
[仅供参考:大O表示法是指渐近复杂性(即N->无穷大);如果 N 有一个有限的限制(在这种情况下为 32 或 64),这没有多大意义。]