0
2

More than 1 year has passed since last update.

基本情報(ビット操作とマスクパターン)

Posted at

論理演算(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で出来ていることを忘れずに、複雑に考えがちですがシンプルに考えられるように鍛えていきます!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2