如何有效地計算128位整數中的前導零數(uint128_t
)?以128位整數計數前導零的數目
我知道GCC的內置功能:
__builtin_clz
,__builtin_clzl
,__builtin_clzll
__builtin_ffs
,__builtin_ffsl
,__builtin_ffsll
但是,這些功能都只能在32位和64位工作整數。
我也發現了一些SSE指令:
__lzcnt16
,,__lzcnt64
正如你可能已經猜到,有16只,這些工作,32位和64位整數。
128位整數是否有任何類似,高效的內置功能?
我假設解決它爲兩個64位整數,然後結合,對亞來說太貴了? – Yakk 2015-02-10 03:28:48
那麼,我必須這樣做,只要沒有人知道更好的解決方案。然而,單一指令可能會比整個換檔,鑄造,分支等更有效率,絕對更美麗。 – user1494080 2015-02-10 03:47:57
你可以通過將它包裝在一個函數中來隱藏醜陋。 – 2015-02-10 04:33:49