ビットマスクがあります(ショートとして保存されます)。さまざまな目的で、最後の 5 ビットを除くすべてをゼロにしたい - ビットごとの演算子を使用してこれを行う簡単な方法があると確信していますが、それは私を逃れます。
1010 01101 1011 0111 -> 0000 0000 0001 0111
ありがとう
ビットマスクがあります(ショートとして保存されます)。さまざまな目的で、最後の 5 ビットを除くすべてをゼロにしたい - ビットごとの演算子を使用してこれを行う簡単な方法があると確信していますが、それは私を逃れます。
1010 01101 1011 0111 -> 0000 0000 0001 0111
ありがとう
次のようなものを使用します。
x & 0x1f
バイナリでは、例は次のようになります。
1010 1101 1011 0111
& 0000 0000 0001 1111
---------------------
0000 0000 0001 0111
演算子を使用する&
と、マスクの 0 ビットは結果の 0 ビットになります。マスク内の 1 ビットは、対応するビットを結果にコピーします。
値 = OriginalValue & 0x1F
このようなもの:
your_variable_name & ((1 << 5) - 1)
(1 << 5) - 1 は 11111 を返し、それからあなたとあなたの値を返します。