1

ビットマスクがあります(ショートとして保存されます)。さまざまな目的で、最後の 5 ビットを除くすべてをゼロにしたい - ビットごとの演算子を使用してこれを行う簡単な方法があると確信していますが、それは私を逃れます。

1010 01101 1011 0111 -> 0000 0000 0001 0111

ありがとう

4

3 に答える 3

8

次のようなものを使用します。

x & 0x1f

バイナリでは、例は次のようになります。

    1010 1101 1011 0111
  & 0000 0000 0001 1111
  ---------------------
    0000 0000 0001 0111

演算子を使用する&と、マスクの 0 ビットは結果の 0 ビットになります。マスク内の 1 ビットは、対応するビットを結果にコピーします。

于 2012-05-29T22:16:30.987 に答える
1

値 = OriginalValue & 0x1F

于 2012-05-29T22:19:03.307 に答える
-1

このようなもの:

your_variable_name & ((1 << 5) - 1)

(1 << 5) - 1 は 11111 を返し、それからあなたとあなたの値を返します。

于 2012-05-29T22:17:37.760 に答える