2013-01-22 38 views

回答

1

我聽說有一些處理器,獲取整數的最高位是單個指令,但我不能命名哪些處理器。即使有這樣的處理器,你也只能得到不是任意二進制數的整數的最高位,這在你的問題中似乎就是這種情況。

對於較長的位序列,我認爲你沒有比檢查每一位更好的選擇,而對於較短的序列,你可以預先計算最高位值(例如有一個數組存儲所有數字的最高位)到32768),而不是簡單地從該數組中獲得一個值,以獲得所有高達15位序列所需的答案。

+1

a)在x86彙編中,'bsr'指令將檢測第一個設置位,從最重要的位開始。在POSIX中,'ffs()'和'fls()'很可能會翻譯成這樣的指令,或者,如果不存在,編譯器將使用De Bruijn序列發出一個非天真的軟件實現。 b)對於較長的位序列,可以連續對每個單詞應用此操作,確保最後一個單詞用零填充。 –