0

16 進数の特定のビットを取得して検証する方法はありますか?

例: 0x11 で、インデックス 2 が 1 かどうかを知りたい。そうであれば、アクションを実行します。

ビット操作で調べましたが、特定のビットについては何も見つかりませんでした。

4

2 に答える 2

2

に基づいて、 Cまたは同じビット演算子を使用するのに十分類似したものを使用している0x11推測します。

この場合、気になるビットが設定されたビットマスクを作成することから始めます。そのビットが設定されたマスクを取得するには、通常1(最下位ビットのみが設定されている)を取得し、適切な数の場所にシフトして、その1つのビットを目的の位置に配置します。

and次に、マスクと入力の間でビット単位で実行します。

最後に、その結​​果andがゼロかどうかを確認します。

int position = 2;

int bitmask = 1 << position;

if (input & mask) 
    // that bit was a 1
else
    // that bit was a 0
于 2012-03-26T15:35:14.627 に答える
1

うーん....数字を複製し、その桁の値をゼロに変更し、XOR を使用するとどうなりますか?

例: 3 桁目 (左から右) が 1 か 0 かを知りたい:

 001011011
           XOR
 000011011  
 ---------
 001000000   // "TRUE"


 000011011
           XOR
 000011011  
 ---------
 000000000   // "FALSE"


 111111111
           XOR
 110111111  
 ---------
 001000000   // "TRUE"

等...

于 2012-03-26T15:38:34.550 に答える