| |
|
![]() |
前頁の答え~デス
問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の意味は何。
「<」と書くと「<」「<」と同様の処理をする。3Cの正体は何。
コンピュータの内部では、これまで見てきたように、あらゆる情報(データでもいいです)を連続する2進数として扱っています。2進数は 「0 と 1」 だけの組み合わせなので、「LowとHigh」などの電子回路(かいろ)に適しているからです。
しかし人間には正直言って、長ったらしくて、どれほどの大きさか一瞬考えてしまいます。 101101011(2) を見ても正直 はてな?デス。 これを補(おぎな)う意味でも、ピッタシこんなのが16進数です。16進数は、2進数の兄さん(姉さん)のようなものと思います。
ボックスを 4ビット毎に区切りを入れてみよう
基本(下位)4ビットについて
始めに基本となる下位4ビットに集中しましょう。 2進数での 0から 1111 までの16通りの数があって、それがすべてだと既に知っています。右端番号記号0123456789ABCDEF です。
例えば表を見て分かるように
111(2)= 7(16)
1101(2) = D(16)
ここで、2進数の4ケタが、ちょうど16進数の1ケタにピッタリおさめているのを見ていただきたい。
8ビット列(= 1バイト)を登場させます。
次の上位4ビットについて
次の上位4ビットについても、全く同様に考えて、順に16個の0123456789ABCDEF
で表記できるのは明らかです。ただし位(くらい)が第2位=2ケタ目に繰り上がっているという大きな違いがあります。
この図は、Fから10、FFから100など位取りの様子を確かめたものです。
先の基本4ビットの最大数F(16進)が、全ビットを1で埋め尽くしている1111(2)であることは大切な視点 です。
この16通りの数をタダの1字で、つまり右端のたてに並んだ数字・英字のように表し、今後もこの16個以外は使わず、 位(くらい)取り記数法でやろうというのが 16進の表記です。
対応表
| 10進数 | 2進数 | 16進数 | ケタ | 2進数では0と1の2個の数字、10進数では0〜9の10個の数字を使います。 同様にして16進数を表わすためには全部で16個の数字が必要で、 これを 0、1、2、…、9 と、これに続くものとして数字ではないが英字のA、B、C、D、E、F(小文字でも いい) までの合計16の英数字を使います。 |
| 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進数の4ビット(ケタ)を1まとめにして、 16進数として1ケタに対応させる方法は、 32ビット、64ビットなどの4の倍数をもちいているコンピュータでは大変有効です。
4ビット単位でシフトさせる意味
(指数法則はこのページで確かめ出来る)
ここの説明にある「シフト」は、一まとめにくくって移動させるという意味で使っています。その程度でいいと思っていますが、後に述べる論理シフト(1010ページ)
を意識しているのは言うまでもありませから、分かりにくいと感じたら立ち寄って見るといいでしょう。 さて 4ビット左シフトすると
24倍
4ビット右シフトすると 2-4 倍 です。
(勿論ビット列の話しであって、16進数の数字並びで述べているのでない) 従って8ビットでは4ビットの左「ズレ」で 24 倍、反対に右「ズレ」で 2−4 倍。
そして 8ビット(1バイト)や16ビット(2バイト)では、4ビットづつ何回ずれても半端にはみ出さない。
4ビット右シフトすると 2-4 倍 です。
(勿論ビット列の話しであって、16進数の数字並びで述べているのでない) 従って8ビットでは4ビットの左「ズレ」で 24 倍、反対に右「ズレ」で 2−4 倍。
そして 8ビット(1バイト)や16ビット(2バイト)では、4ビットづつ何回ずれても半端にはみ出さない。
楽々変換 2進数⇔16進数 16進数⇒10進数
具体的に見ていきますよ
いくつか調べて見ましょう
� �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バイト)でも驚きません。
区切りいい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で割る(=
この余りを取り出して、商について同じように繰り返す。
例 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 と気が遠くなりそうです。

| |
|
![]() |
|
|

