始める電子回路 お役立ちメモ 回路がわかる本 作る、買う、調べる回路 

2進数 と 16進数 の変換


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

        

■ 2進数 と 16進数 の変換

HP内でこのように書いてある部分がいくつもあります。
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
(数学的には   2 2 20 の意味です)
1101 の16進数は 1+4+8=13 (16進数)→    0xD  となります。
 
0011 の16進数は  1+2 = 3 (16進数)→   0x3  となります 


(この、左から 1 2 4 8 の数値を暗記しておけば大丈夫です)



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

例)
       
00011001

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

     上位4桁、 下位4桁 で区切り、4桁ずつ16進数へ変換します
       0001 1001
         ↓     ↓
       それぞれ16進数へ変換 =>  0001→  1  
                           1001→   
 つまり                       
        0001 1001
          ↓     ↓
               

これをくっつけて   19 

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

始める電子回路 お役立ちメモ 回路がわかる本 作る、買う、調べる回路 
        メインページへ