2進数 と 16進数 の変換

2進数と16進数の変換方法の簡単な計算方法について

 

C言語等では直接扱えない2進数

マイコンやデジタル回路に必要な2進数と16進数の変換方法

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
(数学的には  23 22 21 20 の意味です)

 

 

・1101 の16進数は 1+4+8=13 (16進数)→ 
0xD  となります。
・0011 の16進数は  1+2 = 3 (16進数)→ 
0x3  となります 
 (この、左から 1 2 4 8 の数値を暗記しておけば大丈夫です)

 

レジスタ設定値で8ビット(8桁)が出てきます

 

例)
00011001

このような8桁の2進数の 16進数への変換は ? 

上位4桁、 下位4桁 で区切り、4桁ずつ16進数へ変換します

0001   1001
↓     ↓
それぞれ16進数へ変換

 

0001 →  


1001 →  

 

これをくっつけて   19 

つまり 00011001 →(16進数)→ = 19 となります。

 

  • facebook
  • twtter
  • google+
  • hatena