我有一個設(shè)置為1位的64位無符號整數(shù)。我想為每個可能的64個值分配一個值(在這種情況下,為奇質(zhì)數(shù),因此0x1對應(yīng)于3,0x2對應(yīng)于5,...,0x8000000000000000對應(yīng)于313)。似乎最好的方法是將1-> 0,2-> 1,4-> 2,2,8-> 3,...,2 ^ 63-> 63轉(zhuǎn)換為數(shù)組中的值。但是,即使是這樣,我也不知道獲得二進(jìn)制指數(shù)的最快方法是什么。而且可能還有更快/更好的方法。此操作將使用10 14到10 16次,因此性能是一個嚴(yán)重的問題。
3 回答

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊
您可以使用二進(jìn)制搜索技術(shù):
int pos = 0;if ((value & 0xffffffff) == 0) { pos += 32; value >>= 32;}if ((value & 0xffff) == 0) { pos += 16; value >>= 16;}if ((value & 0xff) == 0) { pos += 8; value >>= 8;}if ((value & 0xf) == 0) { pos += 4; value >>= 4;}if ((value & 0x3) == 0) { pos += 2; value >>= 2;}if ((value & 0x1) == 0) { pos += 1;}
與循環(huán)相比,這樣做的優(yōu)勢在于循環(huán)已經(jīng)展開。但是,如果這確實對性能至關(guān)重要,則您將需要測試和衡量每個建議的解決方案。
- 3 回答
- 0 關(guān)注
- 512 瀏覽
添加回答
舉報
0/150
提交
取消