2進数 と 16進数 の変換
このように書いてある部分がいくつもあります。
TA.TMA.BYTE=0x09 ( 0000 1001 )
0x□□ □□が16進数 0xとは16進数ですの意味
( 0000 1001 )内が2進数 です
レジスタ設定などは 8ビットの2進数で設定されます。
2進数 1、0 で設定して、それを 16進数に変換し、レジスタへ代入します。
なぜ16進数へ変換しているかというと、C言語では2進数が扱えないからです。
(C言語では2進数は扱えないものと思ってください、処理系によって使えたり、マクロを使って設定する方法もあるようですが、慣れてしまうとマクロがないと16進数がわからなくなってしまうのでほどほどにと思います)
その変換方法の説明です。
まずは 16進数
・10進数は、10になると2桁になります。9までが一桁です。
・16進数は 15まで一桁です。だから10~15までを一桁であらわすのにA~Fが使われます
10進数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16進数 1 2 3 4 5 6 7 8 9 A B C D E F
変換方法
数学的に計算せず、サラッとやる方法です。
2進数 1101 を変換する場合
桁に1があると 下の数値を足してやります。
2進数 | 1 | 1 | 0 | 1 |
足す数値 | 8 | 4 | 2 | 1 |
- ・1101 の16進数は 1+4+8=13 (16進数)→ D
- 0xD となります。
- ・0011 の16進数は 1+2 = 3 (16進数)→ 3
- 0x3 となります
レジスタ設定値で8ビット(8桁)が出てきます
例)
00011001
このような8桁の2進数の 16進数への変換は ?
上位4桁、 下位4桁 で区切り、4桁ずつ16進数へ変換します
0001 1001
↓ ↓
それぞれ16進数へ変換
0001 → 1
1001 → 9
これをくっつけて 19
つまり 00011001 →(16進数)→ = 19 となります。
- twtter
- google+
- hatena