繁体   English   中英

O(1)时间中的二进制对数(在寄存器x86或SIMD上操作)是否移位?

[英]Binary logarithm in O(1) time (operating on registers x86 or SIMD) without shifting?

我想看看是否有找到数字二进制日志的方法。 假设您有数字4,那么您将2乘以4的乘方就是2。

我知道这可以通过移位和计数实现,但是使用O(N)运算。 对于x = 2^n任何n ,是否有某种方法可以获取O(1)

我想在一个操作中知道xO(1)来找到n

正如您指定的x86一样,听起来像您想要BSR (反向位扫描)操作码,该操作码报告最高有效置位的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM