簡體   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