クリエイター手抜きプロジェクト[482]IoT編 2進数、10進数、16進数/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,500文字)



今回は、機器を制御する際に避けて通れない2進数、10進数、16進数について説明します。

日常でよく使われるのが10進法です。1、2、3、4、5、6、7、8、9と来て、桁が増えて10になります。また、時間を表す場合に60進法や12進法もよく使われます。図形の円なら360度で一回りです。

よくよく見ると、一定の数まできたら、次の桁に繰り上がるn進法は、いろいろなところで使われています。

コンピューターの場合は基本的には2進法ですが、8進法や16進法も使われます。2進法は0と1で数をあらわすことができます。0と1が電流のオン、オフに対応します。

ただ、全部0と1の2進数でプログラムを作るというのは、あまりに大変です。このため、実際にプログラムを作成する場合は、便利な16進数が使われます。





16進法は0〜9までの数と、ABCDEFの文字を使って表します。これが、2進数のビットとうまく対応しています。以下は4ビットと16進数と10進数の対応です。左側が2進数、中央が16進数、右側が10進数です。

0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15

ここまでは、4ビットですが、8ビットだと以下のようになります。全部書くと長いので一部だけです。

00010000 10 16
10000000 80 128
10010001 91 145
10110110 B6 182
11111111 FF 255

16進数は4ビットで0〜Fまでの数値になっているので、91なら8ビット、A910なら16ビット長となります。ところで、16進数から10進数に変換するには、どうしたらよいのでしょうか。これは以下のように計算します。

10 → 1×16+0 = 16
80 → 8×16+0 = 128
91 → 9×16+1 = 145
B6 → 11×16+6 = 182
FF → 16×15+15 = 255

8ビットの場合、上の桁の16進数に16を乗算し、下の桁の16進数を加算すれば10進数に変換できます。ちなみに上の桁は「上位」、下の桁は「下位」という用語があり、上位4ビット、下位4ビットのように使います。

それにしても、いちいち手計算でやっていたのでは面倒です。そこでIchigoJamを使って10進数、16進数、2進数に変換してみましょう。

まず16進数を10進数にするには、以下のようにDEC$()を使い16進数の先頭に#を付けます。IchigoJamでは16進数は先頭に#を付ける決まりです。

?DEC$(#FF)
255
OK
?DEC$(#91)
145
OK

?はPRINT命令の省略形です。PRINT #FFとしても同じ結果になります。今回の場合は、DEC$()を使わなくても同様の結果になります。

?#FF
255
OK
?#91
145
OK

今度は、10進数から16進数に変換してみます。この場合、HEX$()を使います。

?HEX$(255)
FF
OK
?HEX$(182)
B6
OK

今度は、10進数、16進数から2進数に変換してみます。この場合、BIN$()を使います。

?BIN$(145)
10010001
OK
?BIN$(#FF)
11111111
OK

こんな具合に、DEC$()、HEX$()、BIN$()を使えば10進数、16進数、2進数に変換できるわけです。また、先頭に#を付けると16進数、`を付けると2進数として扱われます。

IchigoJamで相互通信する場合に指定した#7Fは、2進数にすると以下のようになります。

0111 1111 (8ビットの場合)
0000 0000 0111 1111 (16ビットの場合)

つまり下位7ビット(右側から7つのビット)だけが使われる、ということになります。と言っても、この段階ではどうして下位7ビットだけが使われるのか、さっぱり分からないでしょう。

これは10進数、16進数、2進数だけの説明だけでは無理だからです。どうして下位7ビットだけが使われるのか、使えるのかは次回の「ビット演算」で説明します。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

今年は大統領が世間を賑わせてくれてますが、フィリピンのロドリゴ・ドゥテルテ大統領、どこかで見たような……。

「あ、あの漫画だ!」 大統領の若い頃は武論尊&平松伸二のドーベルマン刑事に似てる。

・ドーベルマン刑事
https://ja.wikipedia.org/wiki/ドーベルマン刑事

そして大統領になってやってることは、マーダーライセンス牙の首相と似てる。殺人許可証(マーダーライセンス)を発行し悪い奴らを殺しまくるという……。

・マーダーライセンス牙
https://ja.wikipedia.org/wiki/マーダーライセンス牙
https://ja.wikipedia.org/wiki/マーダーライセンス牙&ブラックエンジェルズ

現実の方が漫画を追い越してしまいそう。

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/

・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/