Topページ1−14>1−15>1−16

◆◆1−15 2進数と16進数(6)◆◆




(6)10進数→16進数
10進数16進数に変換するためには次の2通りの方法
があります。

A. いったん2進数に変換してから16進数に変換する。
B. 10進数を16で割って余りを並べる。

<方法A>

@ (1)の方法10進数2進数に変換する。
A (3)の方法2進数16進数に変換する。


<裏技>アドレスの最大値はなぜ65,535なの?

主記憶に付いているアドレスは0番地から65,535番地で
ある、ということは前述した通りです。では、この65,535と
いう数字はどこから出てきたのでしょう。答えは簡単です。
アドレス16ビットで表現されるからです。

では、計算してみましょう。

16ビットで表現できる最大値は(1111111111111111)2 
ですね。これを10進数基数変換すると(65,535)10
なります。したがってCOMETU主記憶の容量は
(65,536)10語ということになります。

通常、nビットで表現できるデータアドレスの範囲
0〜2n−1までとなります。また、nビットで表現できる
データの種類
nとなります。



<例題>次の10進数を16進数に変換しなさい。

(429)10

計算H

<方法B>

@ 10進数を16で割る(商が15以下になるまで)。
A 最後の商と余りを並べる。
B 10〜15ならA〜Fに置き換える。

<例題>次の10進数を16進数に変換しなさい。

(429)10

計算I




<裏技>10進数を16進数に変換するとき、なぜ
      16で割るの?

例を示して説明しましょう。10進数の(8365)10を(8)10
と(3)10と(6)10と(5)10という1けたずつの数値に分解
するにはどうすればいいでしょうか。

103=(1000)10、102=(100)10、101=(10)10
割り算をし、商と余りを求めればいいのです。まず、8365
を(1000)10で割ると商が8になり、余りが365になり
ます。次に、365を(100)10で割ると商が3になり、余り
が65になります。最後に、65を(10)10で割ると商が6に
なり、余りが5になります(正確には5は100=(1)10
で割り算をします)。

8365÷1000=……365
 365÷ 100=…… 65
  65÷  10=……  

これを別の方法で表現すると、次のようになります。

計算J

この計算方法はどこかで見たことがありますね。そうです。
10進数2進数16進数に変換する時に使ったあの
計算方法です。2進数に変換する時は2で割り、16
進数に変換する時
は16で割りましたね。

ところで,上記の計算で最後の商“8”を求めているとき
にも、もちろん10で割っていますが、実は最初に8365を
10で割り、次に836を10で割っていますので本当は10
×10×10、すなわち103で割っていることになるのです。

では次に16進数の場合を考えてみましょう。変換のメカ
ニズムは10進数の場合と同じなので、(8365)10を16
進数に変換したい時は、163=(4096)10、162
(256)10、161=(16)10で割り算をし、商と余りを求め
ればいいということが分かります。まず、8365を(4096)10
で割ると商が2になり、余りが173になります。次に、173
を(256)10で割ると商が0になり、余りが173になります。
最後に、173を(16)10で割ると商が10になり、余りが
13になります。したがって変換結果は(20AD)16となり
ます。

8365÷4096= ……173
 173÷ 256= ……173
 173÷  16=10…… 13

これを別の方法で表現すると、次のようになります。

計算K

これで16で割る意味が分かりましたね。正確には16では
なく、163=(4096)10、162=(256)10、161
(16)10で割り算を行っているのです。これらの値のことを
重み」といいます。したがって16進数10進数に戻す
際には16進数の各けたに重みを掛け、合計するわけです。

2×163+0×162+10×161+13×160=8365






←前へ 次へ→

TOPページへ