亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

旋轉:設置哪一位?

旋轉:設置哪一位?

C
元芳怎么了 2019-12-26 08:50:14
我有一個設置為1位的64位無符號整數。我想為每個可能的64個值分配一個值(在這種情況下,為奇質數,因此0x1對應于3,0x2對應于5,...,0x8000000000000000對應于313)。似乎最好的方法是將1-> 0,2-> 1,4-> 2,2,8-> 3,...,2 ^ 63-> 63轉換為數組中的值。但是,即使是這樣,我也不知道獲得二進制指數的最快方法是什么。而且可能還有更快/更好的方法。此操作將使用10 14到10 16次,因此性能是一個嚴重的問題。
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

您可以使用二進制搜索技術:

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;}

與循環相比,這樣做的優勢在于循環已經展開。但是,如果這確實對性能至關重要,則您將需要測試和衡量每個建議的解決方案。


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 522 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號