読者です 読者をやめる 読者になる 読者になる

明日への断片

ゲーム制作やプログラミング関する記事を中心に更新していこうと思います。

3欠片目:ビット演算の基本

C/C++ プログラミング

 こんにちは!小学校の卒業アルバムの「将来の夢」を書く欄に、何故か「フリーター」と書いていたvoidです!
今回は、ブログ4回目にしてようやくプログラム的なお話をしようと思います!

ビット演算って何さ?

 ビット同士の演算、すなわちデータを2進数で表したときの各ビット毎で行う演算のことです。

2進数とは何か?

 私たちが普段使っている10進数に対して、コンピュータでは2進数が使われています。
10進数は0~9までの10個の数字を使って数を表すのに対し、2進数は0,1の2個の数字のみを使って数を表します。

表にするとこんな感じです
f:id:yasu-game-void:20170211225820p:plain

で、ビット演算ってなにさ?

ビット演算には3つの種類があります。
 

演算の種類 演算記号 演算の内容
ビット和(OR) どちらかが1ならば1
ビット積(AND) どちらともが1ならば1
ビット差(XOR) 互いに異なれば1

※書式の都合上記号は全角文字になっています。

...いまいち分かりませんね、では計算例を見てみましょう

1と3のビット和

1 | 3 → 0001 | 0011

f:id:yasu-game-void:20170211233443p:plain
このように、各ビット毎の上と下どちらかが1であれば1になります。
つまり1 | 3 = 3となります。

1と3のビット積

1 & 3 → 0001 & 0011
f:id:yasu-game-void:20170211235057p:plain
このように、各ビット毎の上と下どちらともが1であれば1になります。
つまり1 & 3 = 1となります。

1と3のビット差

1 ^ 3 → 0001 ^ 0011
f:id:yasu-game-void:20170212000148p:plain
このように、各ビット毎の上と下が互いに異なっていれば1になります。
つまり1 ^ 3 = 2となります。

本日はここまで

 中の人が力尽きたので本日はここまでとしたいと思います。
間違いのないように書いているつもりですが、間違いを見つけた際はご指摘頂ければ幸いです。
 明日は、ビット演算の応用的な使い方を書いていこうと思います。ではまた!