シフトやマスキングを行わずにビット ステータスを確認する
ビットを操作するとき、多くの場合、整数変数内の特定のビットのステータスをチェックする必要があります。 。次の例を考えてみましょう:
int temp = 0x5E; // in binary 0b1011110
temp のバイナリ表現のビット 3 が 1 に設定されているか 0 に設定されているかを判断したいと考えています。
Builtin Function?
疑問が生じます: ビット シフトやビット シフトに頼らずにこの操作を実行する組み込み関数はありますか?マスキング?
C のカスタム マクロ
C にはネイティブ ソリューションがありません。ただし、マクロを作成してプロセスを簡素化できます。
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
ここで、var はチェックする整数、pos はビット位置 (0 からインデックス付けされ、右端のビットから開始します) です。
右から3ビット目を確認するにはend:
CHECK_BIT(temp, 2)
C の Std::bitset
C では、 std::bitset クラスを利用できます:
std::bitset<32> bits(temp); if (bits.test(3)) { // Bit 3 is set }
ここで、bits は temp のバイナリ表現を表し、bits.test(3) は 3 番目の値をチェックします。ちょっと。
以上がシフトやマスキングをせずにビットのステータスを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。