「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

ビット演算子

pointこの用語のポイント

point演算子だよ

pointビット演算で使うよ

point「AND(&)」「OR(|)」「NOT(~)」「XOR(^)」が、よく使われるよ

スポンサーリンク

簡単に書くよ

ビット演算子(読:ビットエンザンシ 英:bitwise operator)とは

ビット演算(ビットに着目して、そのon/offを操作すること)で使われる演算子のこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

ビット
ビット演算
演算子


について結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

ビットは、コンピュータさんの世界における「0か1が入る箱」です。

ビット演算子

あるいは、この「0か1が入る箱」の数を表す単位です。
例えば「4ビット」であれば「0か1が入る箱が4つあるよ」の意味になります。

ビット演算子2

ビットは

コンピュータが処理する最小単位

と言われています。

コンピュータさんは、実際はショボイやつです。
電気信号のonとoff、つまり「1」と「0」しか判別できません。

ビット演算子3

ただし、この「1」と「0」を、た~くさん組み合わせることによって、数字や文字、あるいは画像動画などを扱っています。

ビット演算子4

数字を例に見てみましょう。

ここに0か1が入る箱が1つありました。

ビット演算子5

この状況で表現できる値は2つだけです。

・0
・1


に対応する何かを表現できます。

試しに、数字を2つ割り当ててみましょう。

・0:0
・1:1


とします。

0か1が入る箱が1つだけあるときは、数字の「0」と「1」を表現できました。

おっと、ピヨ太君が箱をもう1つ持ってきたようです。

ビット演算子6

0か1が入る箱が2つになりました。

ビット演算子7

箱が2つになると表現できる値は4つになります。

・0-0
・0-1
・1-0
・1-1


に対応する何かを表現できます。

せっかくなので数字を4つ割り当ててみましょう。

・0-0:0
・0-1:1
・1-0:2
・1-1:3


とします。

箱が1つのときは、表現できる数字は「0」と「1」の2つでした。
箱が2つになると、表現できる数字は「0」から「3」までの4つになりました。

おっと、ピヨ太君が、さらに箱をもう1つ持ってきたようです。

ビット演算子8

0か1が入る箱が今度は3つになりました。

ビット演算子9

箱が3つになると表現できる値は8つになります。

・0-0-0
・0-0-1
・0-1-0
・0-1-1
・1-0-0
・1-0-1
・1-1-0
・1-1-1


に対応する何かを表現できます。

せっかくなので数字を8つ割り当ててみましょう。

・0-0-0:0
・0-0-1:1
・0-1-0:2
・0-1-1:3
・1-0-0:4
・1-0-1:5
・1-1-0:6
・1-1-1:7


とします。

箱が1つのときは、表現できる数字は「0」と「1」の2つでした。
箱が2つになると、表現できる数字は「0」から「3」までの4つになりました。
箱が3つになると、表現できる数字は「0」から「7」までの8つになりました。

さらに箱の数を増やせば、より多くの数字を表現できるでしょう。

ビット演算子10

さらにさらに箱の数を増やせば、数字だけではなく文字も表現できそうです。

ビット演算子11

さらにさらにさらに箱の数を増やせば、画像とか動画も表現できるんじゃないですかね。

ビット演算子12

このように、0か1が入る箱を たくさん使うことで、コンピュータさんは数字や文字、あるいは画像や動画などのデータを扱っているのです。

コンピュータの世界におけるデータの根源は「0か1が入る箱」です。
すべてのデータは

0か1の寄せ集め

であると言えます。

コンピュータさんが判別できる「0か1(が入る箱)」がビットです。
このビットを寄せ集めて、あれやこれやのデータが形作られています。

あるいは「0か1(が入る箱)」の数を表す単位が「ビット」です。
例えば「4ビット」であれば「0か1が入る箱が4つあるよ」の意味になります。

以上がビットの説明です。
次に、ビット演算について説明します。

ビット演算は「ビットに着目して、そのon/offを操作すること」です。

繰り返しになりますが、コンピュータの世界には「0」と「1」しかありません。
「0」と「1」の組み合わせに人間様が適当な意味を割り当てて使っています。

ビット演算子13

この「人間様が割り当てた適当な意味」を1回捨てて初心に立ち返ろう。
「データは0と1の固まりだってことを思い出して操作しよう!」がビット演算です。

例えば、そうですね。

「5」という数字を1つ左にずらしてみましょう。

「『5』を左にズラす」と言われるとピンと来ないかもしれませんが「『0000 0101』を左にズラす」と言われれば勘の良い方は分かるのではないでしょうか。
「0000 0101」は「5」を2進数(0と1の組み合わせ)で表したものです。

0000 0101

のビット(つまりは桁)を全部1つずつ左にズラして空いたところに「0」を埋めると

0000 1010

に なります。

ビット演算子14

2進数の「0000 1010」は10進数に直すと「10」です。
「5」を1つ左にズラしたら「10」になりました。

ビット演算子15

「5を1つ左にズラしたら10になる」です。
算数っぽく考えると「何のこっちゃ?」ですよね。
ですが、ビット演算と捉えれば何もおかしくありません。

このような

ビットに着目して、それを操作する

のがビット演算です。

ビット演算をするときはイメージが大事です。
数字と捉えてしまうと理解しにくいと思います。
旗を持ったおっさんが横一列に並んでいると考えてください。
そのおっさん達に「おまえは旗を上げろ!おまえは旗を下ろせ!」と命令するのがビット演算です。

ビット演算子16

今回はビットをズラすのを例に挙げましたが、他にも、いろいろなビット演算があります。

以上がビット演算の説明です。
最後に「演算子」について簡単に説明します。

演算子は「どんな演算をするか表す記号」です。
「+」「-」「*(×)」「/(÷)」をはじめ、なんか いろいろ あります。

ビット演算子17

以上を踏まえて

ビット演算で使う演算子

が「ビット演算子」です。
そのまんまな説明ですね。

よく使われるビット演算子には

AND(&)
OR(|)
NOT(~)
XOR(^)


などがあります。

ビット演算子18

それぞれの演算子の詳細は、それぞれの用語の説明を ご覧ください。

ビット演算子19

ビット演算子は、基本的な演算子ではあるのですが、プログラミングの現場では意外と使う機会が少なかったりします。
プログラミングは「他の人が見ても分かりやすい」というのも重要でしてね。
処理にビット演算を組み込むと、パッと見で分かりにくくなっちゃうのですよ。

個人的には、使わなくて済むなら使わないに越したことはない演算子だと思っています。


image piyo2

一言でまとめるよ

まぁ「ビット演算子」って単語が出てきたら「ビット演算(ビットに着目して、そのon/offを操作すること)用の演算子なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像078
書籍画像031

おまけ



書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本