ビット演算(1) 1ビットの論理積・論理和

論理積(&)

Aが真で、Bが偽の時、AかつB (A&B) は真か偽か。
という論理演算をプログラムで行います。
論理積は両方のビットが真のときのみ、結果が真となる。
C言語では、0は偽、1は真なので、
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
となる。
#include <iostream>
#include <fstream>
using namespace std;

/*  コンパイルできないときは上の3行を
  #include <iostream.h>
  #include <fstream.h>
   に変えてみてください。  */
   
int main(){
    cout << "a:真 b:真 c:偽 d:偽" << endl;
    bool a,b,c,d,ans;
    
     /*  bool型の変数 a,b,c,d,ans
    bool型とは、0(false)、1(true)が入るデータ型のこと。
    int型も使用できる。(メモリー使用量がその分増える)
    double型、float型を使って論理演算しようとすると、コンパイルエラーになる。*/
    
    a = true;
    b = true;
    c = false;
    d = false;

    cout << "0は偽、1は真です。" << endl;
    cout << endl;

    ans = a & b;
    cout << "a & b = " << ans << endl;
    ans = a & c;
    cout << "a & c = " << ans << endl;
    ans = d & b;
    cout << "d & b = " << ans << endl;
    ans = c & d;
    cout << "c & d = " << ans << endl;

    return 0;
}

出力結果
a:真 b:真 c:偽 d:偽
0は偽、1は真です。

a & b = 1
a & c = 0
d & b = 0
c & d = 0

論理和(or)

Aが真で、Bが偽の時、AまたはB (A | B) は真か偽か。 という論理演算を行います。
論理和はどちらかのビットが真のとき、結果が真となる。
C言語では、0は偽、1は真なので、
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
となる。
#include <iostream>
#include <fstream>
using namespace std;

    /*  コンパイルできないときは上の3行を
    #include <iostream.h>
    #include <fstream.h>
    に変えてみてください。  */

int main(){
    cout << "a:真 b:真 c:偽 d:偽" << endl;
    bool a,b,c,d,ans;
    
    /*  bool型の変数 a,b,c,d,ans
    bool型とは、0(false)、1(true)が入るデータ型のこと。
    int型も使用できる。(メモリー使用量がその分増える)
    double型、float型を使って論理演算しようとすると、コンパイルエラーになる。*/
    
    a = true;
    b = true;
    c = false;
    d = false;

    cout << "0は偽、1は真です。" << endl;
    cout << endl;

    ans = a | b;
    cout << "a | b = " << ans << endl;
    ans = a | c;
    cout << "a | c = " << ans << endl;
    ans = d | b;
    cout << "d | b = " << ans << endl;
    ans = c | d;
    cout << "c | d = " << ans << endl;

    return 0;
}

出力結果
a:真 b:真 c:偽 d:偽
0は偽、1は真です。

a | b = 1
a | c = 1
d | b = 1
c | d = 0