前頁の答え
問1 1000000 (10)  
 = 1111 0100 0010 0100 0000
(2)
問2 0.4(10 )
 = 0.0110011001…

1.お疲れ~長くて頭痛しませんでしたか。
 見やすくするため4ビットずつ区切っています。
2.どこまでも終わりません。循環(じゅんかん)小数と言います。「分数 / 小数」(111ページ)も参考 にしてください。

いよいよ16進数へ

英字も出番ですよ! 

 HTMLタグ(ホームページの言語)で、
Colorを #36C9FFとしたら下の色。 
R(ed)が36、 G(reen)が C9、 B(lue)がFFの意味は何。
&#x3C」と書くと「&lt;」「<」と同様の処理をする。3Cの正体は何。
color:#36C9FF
< ←「&#x3C」 
 コンピュータの内部では、これまで見てきたように、あらゆる情報(データでもいいです)を連続する2進数として扱っています。2進数は 「0 と 1」 だけの組み合わせなので、「LowとHigh」などの電子回路(かいろ)に適しているからです。
しかし人間には正直言って、長ったらしくて、どれほどの大きさか一瞬考えてしまいます。 101101011(2) を見ても正直 はてな?デス。 これを補(おぎな)う意味でも、ピッタシこんなのが16進数です。16進数は、2進数の兄さん(姉さん)のようなものと思います。

ボックスを 4ビット毎に区切りを入れてみよう

基本(下位)4ビットについて

16進数導入  8ビット列(= 1バイト)を登場させます。始めに基本となる下位4ビットに集中しましょう。
2進数の 0から 1111 までの16通りの数があって、それがすべてだと知っています。
この16通りの数をタダの1字で、つまり右端のたてに並んだ数字・英字のように表し、今後もこの16個以外は使わず、位(くらい)取り記数法でやろうというのが16進の表記です。
図で青色(blue)で示しましたが、この1ケタの16進数を改めて紹介(しょうかい)しましょう。
 
0123456789ABCDEF
です。
例えば表を見て分かるように
  111(2)= (16)
 1101(2) (16) 
ここで、2進数の4ケタが、ちょうど16進数の1ケタにピッタリおさめているのを見ていただきたい。


次の上位4ビットについて

16進数導入2  次の上位4ビットについても、全く同様に考えて、順に16個の
 0123456789ABCDEF
で表記できるのは明らかです
。ただし位(くらい)が第2位=2ケタ目に繰り上がっているという大きな違いがあります。 
先の基本4ビットの最大数F(16進)が、全ビットを1で埋め尽くしている1111(2)であることは大切な視点 です。

左図は、Fから10、FFから100など位取りの様子を確かめたものです。

対応表 


10進数 2進数 16進数 ケタ   2進数では0と1の2個の数字、10進数では0〜9の10個の数字を使います。 同様にして16進数を表わすためには全部で16個の数字が必要で、 これを 0、1、2、…、9 と、これに続くものとして数字ではないが英字のA、B、C、D、E、F(小文字でも いい) までの合計16の英数字を使います。
 Fの次のカウント数は2桁(ケタ)の10です。さらに、11、12、13、…とカウントを続け、FF の次が3桁の100になるわけです。 FFFの次が4桁の1000というように、 桁数が増えていきます。
1 1 1 1
15 1111 F
16 1 0000 10 2
255 1111 1111 FF
256 1 0000 0000 100 3
4095 1111 1111 1111 FFF
4096 1 0000 0000 0000 1000 4
65535 1111 1111 1111 1111 FFFF
65536 1 0000 0000 0000 0000 1 0000 5
     
 2進と16進の対応からも分かる通り好都合なのは、16進数の1桁が2進数のちょうど4桁分になっていることです。24=16からも分かります。
従って 2進数の4ビット(ケタ)を1まとめにして、 16進数として1ケタに対応させる方法は、 32ビット、64ビットなどの4の倍数をもちいているコンピュータでは大変有効です。

4ビット単位でシフトさせる意味(指数法則はこのページで確かめ出来る)

16進数4-4
ここの説明にある「シフト」は、一まとめにくくって移動させるという意味で使っています。その程度でいいと思っていますが、後に述べる論理シフト(1010ページ) を意識しているのは言うまでもありませから、分かりにくいと感じたら立ち寄って見るといいでしょう。
  さて 4ビット左シフトすると 2倍 
 4ビット右シフトすると 2-4 倍 です。
(勿論ビット列の話しであって、16進数の数字並びで述べているのでない) 
従って8ビットでは4ビットの左「ズレ」で 2倍、反対に右「ズレ」で 2−4 倍。
そして 8ビット(1バイト)や16ビット(2バイト)では、4ビットづつ何回ずれても半端にはみ出さない。 

楽々変換 2進数⇔16進数 16進数⇒10進数

具体的に見ていきますよ
いくつか調べて見ましょう
16進数の例
 1011101(2)
  =1×26+ 1×24+ 1×23+ 1×22+ 1×20
  =64+ 16+ 8+ 4+ 1  = 93(10)
 16進数では次のようになります。
 5D
(16)
 =5× 24 + D 
 =5×16 +13  = 93(10)
◆ー分でどうぞ
 FF(16)
  = F× 24+ F
  = 15×16 + 15 = 255(10)
  もう少し続けます   16進数の例2 16ビット列(2バイト)でも驚きません。
区切りいい4ビットシフトを繰り返すだけですから。
101/1110/0010/1011(2)
⇔ 5E2B(16)
= 5× 212 + E× 28 + 2× 24 + B 
= 5×4096 + 14×256 + 2×16  + 11 
= 24107 (10)
 
 ァ2バイト(16ビット)で表現できる符号なし最大数です。
 FFFF(16) = 65535(10)  となることを確かめてください。 また、これについては
 10000(16) - 1  = 216 - 1  = 65536 - 1 = 65535  となっています。

  変換 10進数⇒16進数 10進数⇒2進数の方式を真似る 

10進数を16進数に変換(へんかん)する  ‥ 

(その1) 整数の場合です

 16進数の整数部分の並び(列)を
C = cn cn-1…… c3 c2 c1 とする。
Cを16で割る(= を掛ける)と
答え(商と呼ぶ)が cn cn-1…… c3 c2 (16進数の並び)で、 あまりがc1となる。
この余りを取り出して、商について同じように繰り返す。  
 5500 (10) を16進数に変換する。 





 左の説明より、12=C (16)だから
 16進では 157C となります。

10進数を16進数に変換(へんかん)する ‥ 

(その2)小数の場合です

 16進数の小数部分の並び(列)を
B = 0.b1b2b3…… bn-1bn とする。
Bを16倍する(×16)と b1 が整数部分にはみ出し、残りが(16進数の並び)で、
 0.b2b3…… bn-1bn となる。
このb1を取り出して、残りについて同じように繰り返す。  
 10進小数については、これを次々に16倍してゆき、整数部分を0も含めて順次に取り出す。

具体例は上げませんが、ただ、殆どは無限小数となるから適当な桁で止めることになる。有効数字の考え方が必要です。
問題です (答えは次回です)
(1) 5DC (16) は 10進数でいくらでしょう。2進数ではいくらでしょうか。
(2) 2500 (10) は16進数でいくらでしょう。
(3) 6C (16) を 8倍すると16進数でいくらでしょう。
符号なしで扱います。
(1)10進、 2進どちらを先に答えを出してもいい。
(2)(3)が出来ればほぼ卒業(^○^)
65536 蛇足(だそく)  
 1 0000(16)=65,536(10) は「婿の権三郎」と覚えるといいと聴いたことがあります。 表計算ソフトEXCEL(エクセル)のシートをご覧下さい。セルの最終行を見ると 何と「ムコのゴンザブロウ」なんです。
追記)EXCEL2007ではシートが大きくなり最終は 10 0000(16)=1,048,576(10)です 。ちなみに、最終も IV=256から XFD=16,384 となっています。最終セルはXFD1048576 と気が遠くなりそうです。
Excelシート
   
 

to home 

前のページ 

次のページ