[C++] 簡単なビット演算を紹介します(論理和(or)、論理積(and)、排他的論理和(xor))

C++

タイトル通りビット演算の紹介をしていきたいなと思います。

ビット演算とは二進数の計算のことですね。

具体的にソースコードで簡単に説明していく

#include <iostream>
using namespace std;

int main(void) {
  int a = 6;
  int b = 12;
  int c = ~4 + 1; // 2の補数表現
  int d = (3 | 4) << 2; //ビット演算 和
  int e = 5 ^ 3; // ビット演算 排他的論理和

  cout << (a & b) << endl; // ビット演算 積
  cout << c << endl;
  cout << d << endl;
  cout << e << endl;

}


/* 実行結果
  4
  -4
  28
  6
*/

補数表現から解説していきます

~で補数表現を表現しています。

まず4を二進数になおすと0100で先頭の0は正を表し、1なら負を表します。

処理の流れとしては

1.全ての反転させる 2.最後に1をたす

といった感じです。

まず1.で反転させて1011になり、2.で1を足して1100となり−4となりました。

論理積

&で論理積を表します。

計算方法

まず数字を2進数に変換して位が同じどうしで二進数の掛け算を実行します

12→1100

 6 →0110

12 & 6 = 0100 → 4

となります。

簡単なまとめ

ab論理和( | )論理積( & )排他的論理和( ^ )
00000
01101
10101
11110

もしよかったら参考してください。

今回は以上になります。

ではまた。

コメント

タイトルとURLをコピーしました