腕時計の沼、オーディオの沼、PCの沼。『タクジの沼』

ビット制御

MSBとLSB

ビット並びのうち、最も重みのあるビットをMSB、最も重みのないビットをLSBといいます。

ビット演算子

AND(論理積)

両方のビットが1のときのみ結果が1になるビット演算子
必要なビット以外をOFF(0)にする処理をマスクといいます。

x y x & y (AND)
0 0 0
0 1 0
1 0 0
1 1 1
0xAA     & 0xF0     = 0xA0
10101010 & 11110000 = 10100000

OR(論理和)

いずれかのビットが1なら結果が1になるビット演算子
必要なビットをON(1)にする場合に使われます。

x y x | y (OR)
0 0 0
0 1 1
1 0 1
1 1 1
0xAA     & 0xF0     = 0xFA
10101010 & 11110000 = 11111010

XOR(排他的論理和)

両方のビットが異なるときに結果を1にするビット演算子
特定なビットを反転する場合に使われます。

x y x ^ y (XOR)
0 0 0
0 1 1
1 0 1
1 1 0
0xAA     & 0x0F     = 0xA5
10101010 & 00001111 = 10100101

NOT(反転)

ビットの反転を行うビット演算子
全ビットの無条件反転行います。

x ~x (NOT)
0 1
1 0

<<(左シフト)

x << nと書き、xをnビット左へシフトします。
右側の空いたビットには、0が入り、左側のビットは捨てられます。

>>(右シフト)

x >> nと書き、xをnビット右へシフトします。
左側の空いたビットには、xが符号無しなら0が入ます。 符号付きなら、算術シフトを行う処理系では符号桁が入り、論理シフトを行う処理系では0が埋められます。 右側の美とは算術シフト、論理シフトに関わらず捨てられます。