[英]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)
?
我想在一個操作中知道x
或O(1)
來找到n
。
正如您指定的x86一樣,聽起來像您想要BSR
(反向位掃描)操作碼,該操作碼報告最高有效置位的位置。
[ 僅供參考:big-O符號表示漸近復雜度(即N->無窮大); 如果N有一個有限的限制(在這種情況下為32或64)並沒有多大意義。 ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.