ビット操作とマスクパターン
論理演算を用いると、このようなビット操作も簡単に行うことが出来るのです。
気づき
2の補数をどうやって表現するのか?
反転させて1を足す。
NOT回路とOR回路を思い浮かぶ。
ビットを反転させる。
排他的論理和(EOR,XOR)を用いる。
2つの入力が等しい場合は0を、異なっている場合は1を出力
これを用いる。
反転させたいビット列の反転させたい位置に1を入れたビット列
(マスクパターン
)を作る。
1を入れたビット列と反転させたいビット列を足す
するとビット列を反転させることができる。
例
00000011
のビット列を反転させたい。
EOR/XORを意識してマスクパターンを作成。
11111111
になる。
両者を足すと11111100
になる。
特定のビットを取り出す
ビットを取り出すには論理積(AND)を用いる。
ビットマスクをを作成させる。
例
01101011
から後ろ4ビットを取り出す。
その際に後ろ4ビットが残るようにAND回路を意識してマスクパターンを作成させる。
そうして00001111
になる。
両者を足すと00001011
になる。
気づき
特定のビットを取りだせて何がいいのだろうか?