こんにちは!タカモリです。今回はビット操作について勉強していきます。

例えば今あるビットの数値を反転したり、日梅雨な部分のみを取り出す操作を行うことがあると思います。

例えばコンピュータは足し算しか本来できないですが、引き算をする為にはその数を2の補数で表す必要があったかと思います。2の補数にする為には全ビットを反転させて1 を足すのでしたね!

今の例のように現在表しているビットを操作する方法について学習していきたいと思います。と言っても実はこれもこれまでに学習した論理演算でできるのです。

ビットを反転させる

先程の例にあった2の補数表現についてみていきます。 例えば00000111という8ビットの2進数を補数表現にしたい場合には11111111や00001111など操作したい箇所に1を対応させて排他的論理和で演算を行うことで、1を当てた箇所が反転します。 これは排他的論理和のどちらかの入力が1なら1を返すというものを利用したビット操作です。

排他的論理和 0 0 0 0 0 1 1 1
1を当てると 1 1 1 1 1 1 1 1
結果 1 1 1 1 1 0 0 0

マスクする

先ほどは排他的論理和を利用したビット操作でしたが、他の回路を利用してビットを操作することももちろんできます。続いては論理積回路を使ったビット操作です。

論理積 1 0 1 0 1 0 1 0
1を当てると 0 0 0 0 1 1 1 1
結果 0 0 0 0 1 0 1 0

論理積回路を当てることで、1を当てたビット以外を全て0にすることができます。この操作をマスクと言います。

今回はわかりやすかったのではないでしょうか!この他にもビット操作はあるので興味のある方は是非調べてみてくださいね!