2015年08月18日

番外編 -2進数

今回は2進数について説明します。
シリアル通信というArduinoがパソコンなどとデータをやりとりする機能を説明しようと元々は思ってましたが、その前にデータと関係が深い2進数について説明した方がいいと思いました。


目次



1. 2進数

今までArduinoでスイッチやLEDなどの入出力制御を行うときはHighとLowの2種類の電気信号を使ってきました。Arduinoがパソコンなどとデータをやり取りする場合もHighとLowの2種類だけでやり取りを行います。2種類の値だけでデータを表現する方法が2進数です。

2進数では10の2つだけで数を数えることができます。2つだけなのでHighとLowをやり取りできれば、2進数もやり取りすることができます。

18_2進数_1-1.png

※上図ではHigh=1 Low=0としていますが、High=0 Low=1とする場合もあります



2. 2進数の数え方

2進数を説明する前に普段使っている10進数について説明します。10進数では0〜9までの数字が使え、桁が上がるとその桁の位は10倍になります。

18_2進数_2-1.png

一方、2進数では0と1の数字が使え、桁が上がるとその桁の位は2倍になります。下図では8の位までしか書いていませんがその後も16の位、32の位、……、と増えていきます。

18_2進数_3-1.png

2進数の値を10進数にするときはそれぞれの桁の値と位をかけて、それらを全て足します
例えば2進数で1001の値を10進数に変換すると以下のようになります。

$1\times 8 \  + \  0 \times 4 \  + \  0 \times 2 \  + \  1 \times 1 = 9$

110110だとこうなります。

$1 \times 32 \  + \  1 \times 16 \  + \  0 \times 8 \  + \  1 \times 4 \  + \  1 \times 2 \  + \  0 \times 1 = 54$

2進数の読み方ですが数字を一桁ずつ読みます。1001は「いちぜろぜろいち」、110110は「いちいちぜろいちいちぜろ」です。0は「まる」や「れい」と読んでもよいですが、1000を「せん」と読んだり10を「じゅう」と読んだりはしないでください。

このブログで扱う数字は基本的に10進数ですが、今回のように2進数を使ったりする場合があります。10進数と2進数が混ざる場合、10進数は数字の後ろに(10)、2進数は(2)、後述する16進数は(16)を付けます。なお一般的には数字の前に0xを付けると16進数です。


3. 16進数

10進数だと4桁あれば0(10)〜9999(10)まで表せますが、2進数だと0(10)〜15(10)までしか表せません。2進数で大きい数字を表すには桁がたくさん必要ですが、桁が多いと見て分かりにくいです。そこで桁数を減らして見やすくするために、2進数の4桁をまとめて16進数という数え方を使います。
16進数では16個の数字を使え、桁が上がるとその桁の位は16倍になります。数字は0〜9までしかありませんので、10〜15はA〜Fを使います。A(16)=10(10)、B(16)=11(10)、F(16)=15(10)です。

18_2進数_4-1.png

B(16)、51(16)、FC7(16)を10進数に変換すると、それぞれ以下のようになります。

$11\times 1 = 11$

$5\times 16 \  + \  1 \times 1 = 81$

$15\times 256 \  + \  12 \times 16 \ + \   7 \times 1 = 4039$

16進数の数字の読み方も2進数と同様に数字を一桁ずつ読みます。ですのでB(16)は「びー」、51(16)は「ごーいち」、FC7(16)は「えふしーなな」と読みます。
なお、16進数は表示がそうなっているだけで、電子機器が実際に扱っているのは2進数です。あくまで見やすくするために2進数を4桁ずつまとめて、16進数として表示しているだけです。


やり取りできる電気信号がHighとLowの2つだけでも、2進数を使うことで数字のやり取りを行うことが出来ます。電子機器はデータに2進数の番号を割り振り、その番号をやり取りすることでデータをやり取りしています。
例えば「あ」という文字に「0001(2)」という番号を割り振れば、「0001(2)」の電気信号をやり取りすることで、「あ」の文字をやり取りすることが出来ます。
ただ、どの番号にどの文字が割り振られているかを電子機器同士が知らなければ、文字を正しくやり取りすることが出来ません。どの番号がどの文字に割り振られているのかのルールを文字コードといいます。
次回は文字コードについて説明します。


ディジタル回路 [ 春日健 ]

価格:1,620円
(2015/8/18 20:53時点)




posted by ました at 21:06| Comment(0) | TrackBack(0) | 電子工作の知識 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。