O(1)时间内的二进制对数(在寄存器x86或SIMD上运行)没有移位?

时间:2013-07-14 23:52:46

标签: assembly x86 sse mmx binary-log

我想知道是否有找到数字binary log的方法。假设您有数字4,那么您将两个获得四的权力是2。

我知道这可以通过移位和计数来实现,但是使用O(N)操作。有哪些方法可以O(1)获取n x = 2^n的任何地方n

我想在x中找到O(1),在一次操作中{{1}}或{{1}}。

1 个答案:

答案 0 :(得分:2)

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

[ FYI:big-O表示法指的是渐近复杂度(即N - >无穷大);如果N具有有限的限制(在这种情况下为32或64),则没有多大意义。]