各ビットの値の取得
前述の配列を用いてドットマトリクス LED の列の設定を行うには、配列の各要素、すなわちある値に対して、あるビットが 0 か 1 かをプログラム上で取得する必要があります。
例えば「0b00010100」という値の 2 番ビット(LSB を 0 番目とする)が 0 か 1 かを取得するにはどうすれば良いでしょうか?
方法のひとつは、「ビット全体を右側(LSB 側)に 2 つ移動させ,0 番ビットを見てみる」ということです。
まずは「0b00010100」のビット全体を右側に 2 つ移動させてみましょう。以下のように「0b000101」という値が得られます。
二進数の各ビット | 十進数表記 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
元の値 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 20 | |
右側に 1 つ移動 | – | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 10 | |
右側に 2 つ移動 | – | – | 0 | 0 | 0 | 1 | 0 | 1 | 5 |
この「0b000101」に対して、以下のように 0 番目のビットだけを見るようにすれば、元の値の 2 番ビットが 0 か 1 か(今の場合は 1)を取得できます。
二進数の各ビット | 十進数表記 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
元の値 | – | – | 0 | 0 | 0 | 1 | 0 | 1 | 5 | |
0 番ビット | – | – | – | – | – | – | – | 1 | 1 |
C 言語には、以上のような演算を行うのに便利な「ビット演算」という演算が備わっています。