我想知道是否有找到数字binary log的方法。假设您有数字4,那么您将两个获得四的权力是2。
我知道这可以通过移位和计数来实现,但是使用O(N)
操作。有哪些方法可以O(1)
获取n
x = 2^n
的任何地方n
?
我想在x
中找到O(1)
,在一次操作中{{1}}或{{1}}。
答案 0 :(得分:2)
正如您指定的x86,听起来您想要BSR
(位扫描反向)操作码,它会报告最重要的设置位的位置。
[ FYI:big-O表示法指的是渐近复杂度(即N - >无穷大);如果N具有有限的限制(在这种情况下为32或64),则没有多大意义。]