我需要提取用long值一定位範圍,例如:的Java得到位範圍從長
long input = 15367 (11110000000111)
我需要那麼做的是從原來的長提取兩個長值,
First long is 5 bits starting from bit 0, so bits 0:4 = 7 (0111)
Second long is 56 bits starting from bit 8, so bits 7:55 = 60 (1111000)
我知道這可以用位移位和屏蔽來實現,但我不完全知道如何實現這所以它是動態的,每次,因爲每次我需要這樣做,長會有所不同,特定的位範圍也是如此。
我一直在閱讀關於BitSets和BitArrays,但我不完全確定這些都是正確的工作。
任何有關最佳實施方法的建議將不勝感激。
謝謝!
只是門票,感謝FGE! – Tony
'''不會工作得很好,因爲'&'最後會刪除符號擴展'1'嗎? (對你有利的角落案例:你在輸入的最左邊界之外提取位,例如nrBits = 32,offset> 32) – zapl
不,它不會。說(用8位來簡化)你有'10001111'並且想從偏移量3開始提取三位:如果你使用'>>>',右移給出'00010001',但用'>>'它會給出'11110001'(符號位被攜帶)。 – fge