我在閱讀有關優化方法的一些問題。
在如何對特定範圍內的數字進行排序的問題中,解決方案是使用位圖。如果一個數字可以出現,例如多達10次使用半字節來映射數字和作爲計數器來表示出現的次數。
我理解的概念很好。我的問題是如何以直接的方式在Java中實現這一點。對這些類型的字節級操作執行java編碼的最佳方法是什麼?
我被困在位操作上。
例如,對於第一部分遞增1櫃檯,我能想到的是:
找到字節
例如bitValue[i]
然後做byte tmp = bitValue[i] & 0x0F
得到低位(如果計數器是低位計數器)。
然後做tmp = tmp + 1
增加1.
然後做bitValue[i] >> 2
來清除低端位然後bitValue[i] <<2
來恢復。現在我們具有與原始相同的高位,並且清除低位。
然後做bitValue[i] |= tmp
設置低位。
現在bitValue
的低位計數器加1。
對於高位,它將是相同的過程,但高位。
然後,當我必須檢查計數器的數量是多少。
我想使用位掩碼:
0x0
0x1
0x2
等,並使用OR
檢查什麼是當前的計數值。
所有這些看起來都太複雜了。我在正確的軌道上嗎?這些操作在Java編碼中如何最好地解決?
任何輸入,對此的指導是非常受歡迎的。
您是在學習優化還是優化?如果你真的在進行優化,你是否發現了一個性能問題,或者你認爲你正在做什麼是必要的? FWIW,這可能沒有必要。 – Dave 2012-04-02 20:51:57
@Dave:我在讀書。 – Cratylus 2012-04-03 15:51:01