論理演算(ORやAND)などを使って、ビット操作というものを行うことができるようです。
ビット演算とは
ビット演算(ビットえんざん、bitwise operation: 直訳すると「ビット毎操作」)とは、固定長のワードなどといった「ビットのカタマリ」(コンピュータの数値表現なども参照)に対して、各々のビット全てに対する論理演算をいっぺんに行う演算操作である。 wikipedia引用
よくわからないのでビットを調べたところ
コンピュータの世界における「0か1が入る箱」のこと。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典引用
コンピュータは複雑なことをしているように見えますが、電気信号のonとoff
「1」と「0」しか判別ができません。
ビット演算のイメージとしては「1」と「0」を集めて操作したりする
ですかね。
ビット反転
ビット反転とは
排他的論理和(EOR、XOR)を用いることで表現できます。
XORの真理値表をおさらいすると
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
です。
反転させる例は
00000011
+ 11111111
-----------
11111100
です。
「ビットを反転させたい位置に1を入れたビット列」のことをマスクパターンと呼ぶそうです。
例えばあるビット列
00000011
があるとして
11111111
全部反転させたいなら上記を使い
00001111
後ろ4ビットだけ反転させたいなら上記を使います。
特定のビットを取り出す
ビットを取り出す場合は、論理積(AND)を用います。
真理値表をおさらいすると
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
今回は
01101011
// 対象となる元のビット列
上記に対して
00001111
// マスクパターン
を使ってビットを取り出してみます
01101011
+ 00001111
-----------
00001011
まとめ
- ビットを反転させる際は排他的論理和(XOR)を使い
- ビットを取り出す場合は論理積(AND)を使用
- 元のビットに対してマスクパターンを使って反転させるか、取り出すことができる
ざっくりとまとめてみました。
コンピュータは0と1で出来ていることを忘れずに、複雑に考えがちですがシンプルに考えられるように鍛えていきます!