腕時計の沼、オーディオの沼、PCの沼。『タクジの沼』
ビット並びのうち、最も重みのあるビットをMSB、最も重みのないビットをLSBといいます。
両方のビットが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
いずれかのビットが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
両方のビットが異なるときに結果を1にするビット演算子
特定なビットを反転する場合に使われます。
x | y | x ^ y (XOR) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
0xAA & 0x0F = 0xA5 10101010 & 00001111 = 10100101
ビットの反転を行うビット演算子
全ビットの無条件反転行います。
x | ~x (NOT) |
---|---|
0 | 1 |
1 | 0 |
x << n
と書き、xをnビット左へシフトします。
右側の空いたビットには、0が入り、左側のビットは捨てられます。
x >> n
と書き、xをnビット右へシフトします。
左側の空いたビットには、xが符号無しなら0が入ます。
符号付きなら、算術シフトを行う処理系では符号桁が入り、論理シフトを行う処理系では0が埋められます。
右側の美とは算術シフト、論理シフトに関わらず捨てられます。