次のシナリオを考えます。
<br>int temp = 0x5E; // バイナリ 0b1011110.<br>
ビット シフトやマスキングを使用せずに、temp のビット 3 が 1 か 0 かを判断したいとします。このタスク用の組み込み関数はありますか? それとも独自のソリューションを実装する必要がありますか?
C では、次のマクロを作成することでビット操作を隠すことができます:
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
このマクロを使用する、次のようにして右端から n 番目 ビットを確認できます。 syntax:
CHECK_BIT(temp, n - 1)
C では、 std::bitset を利用するオプションがあります。このクラスは、明示的なビット シフトやマスキングを行わずにビットを操作する方法を提供します。 at() メソッドを使用して、ビットセット内の個々のビットにアクセスできます。たとえば、
std::bitset<8> temp_bitset(temp); if (temp_bitset.at(2)) { // bit 3 // Bit 3 is set }
これらの手法を利用すると、手動でビットを操作する必要がなく、ビットのステータスを簡単にチェックでき、明確さと保守性を確保できます。コードに含めてください。
以上がC および C でビットをシフトせずにビットのステータスを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。