C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のビットごとのAND演算子とは?仕組みと使い方を解説

C++におけるビットごとのAND演算子(&)は、2つのオペランドの各ビットを対応する位置ごとに比較する演算子です。両方のビットが1である場合のみ、結果の該当ビットが1に設定されます。それ以外の場合は0になります。

この演算子を使用する際、両方のオペランドは整数型(integral型)である必要があります。浮動小数点型には使用できません。

ビットごとのANDの真理値表

各ビットの組み合わせに対する結果は以下の通りです。

  • 0 & 0 → 0
  • 0 & 1 → 0
  • 1 & 0 → 0
  • 1 & 1 → 1

サンプルコード

次の例では、16進数で表された2つのunsigned short型の変数をAND演算しています。

#include <iostream>
using namespace std;

int main() {
    unsigned short a = 0x5555;   // ビットパターン 0101 ... 
    unsigned short b = 0xAAAA;   // ビットパターン 1010 ... 
    cout << hex << ( a & b ) << endl;
}

変数aは「0101」が繰り返されるパターン、変数bは「1010」が繰り返されるパターンを持っています。つまり、各ビット位置で必ず片方が0になるため、AND演算の結果はすべてのビットが0になります。

出力結果

このプログラムを実行すると、以下の出力が得られます。

0

このように、互いに補完関係にあるビットパターン同士のAND演算は必ず0になるため、特定のビットが立っているかどうかを確認するマスク処理など、実践的な場面でもビット演算はよく使われます。

  1. C++のビット演算子(AND・OR・XOR)の使い方を解説

    C++で利用できるビット演算子(ビットごとの演算を行う演算子)には主に3種類あります。ビットごとのAND演算子(&)、ビットごとのOR演算子(|)、そしてビットごとの排他的OR演算子であるXOR(^)です。これらの演算子は、データを2進数のビット列として扱い、対応するビット同士を比較することで新しい値を生成します。フラグ管理やマスク処理など、低レベルなプログラミングで頻繁に活用される重要な演算子です。ビットごとのAND演算子(&)AND演算子(&)は、第1オペランドの各ビットを、第2オペランドの対応するビットと比較します。両方のビットが1の場合のみ、結果の対応するビット

  2. C#のビット演算子とシフト演算子の使い方を徹底解説

    ビット演算子(Bitwise Operator)は、数値を2進数のビット列として扱い、1ビット単位で演算を行うための演算子です。フラグ管理や高速な計算処理など、パフォーマンスが求められる場面で活用されます。C#で使える主なビット演算子以下の表は、C#でサポートされているビット演算子の一覧です。ここでは、変数Aに60(2進数:0011 1100)、変数Bに13(2進数:0000 1101)が格納されているものとして説明します。演算子説明使用例&ビット単位のAND演算子。両方のオペランドで対応するビットが1の場合のみ、結果にそのビットをコピーします。(A & B) = 12(000