16進数について(ITパスポート)
16進数とは
16心痛ではなく、16しんすうと読みます。
2進数で学んだのと同じ、16コ目で1桁上がります。
ところが、
10とは13とかの表記はしません。
なんと・・10=A、11=B、と表現します。
並べると、
1・2・3・4・5・6・7・8・9・A(10)・B(11)・C(12)・D(13)・E(14)・F(15)
となります。
以上15個の数字とアルファベットを使って表現されます。
では、16はどうなるのかというと。
「10」になります。
???と、なりますが、
安心してください。
2段目の「1」は16の1乗を掛けたものになります。
つまり、
1×16=16
と、いうことです。
2進数で「10」と並んだ数字は『2』であると学びました。
16進数でも同じ「10」の場合は『16』となります。
なぜなら、10は2進数の1は2段目にあるので2の1乗を掛けた数字になりますそれに0を足すので、(2+0)となり答えは:2
16進数の10は2段目の1に16の1乗を掛けるので、(1×16+0)となり答えは:16
では、「F1」はどうでしょう?
1=16進数の1段目なのでそのまま「1」
F=15でしたね。
15に16の1乗を掛けるので(15×16=240)
240に1を
足すと=241になります。
ここまでで出遅れた人は、2進数をもう一度見直した方が良いかもです。
とにかく、ここで覚えておくべきは。
16しんすうは15個しかない、という事。
1
2
3
4
5
6
7
8
9
10=A
11=B
12=C
13=D
14=E
15=F
これだけは覚えておきましょう。
16進数の1〜Fはただの数字、右端の数字は1の位と考えて良い、ただし、2つ目の位からが厄介、16の1乗×数値となる。
つまり、A1はまず、Aを10に翻訳して、から16を掛る、そして1を足す。
つまり、「161」になる。
分かりにくいので、区切ると。
160+1=「161」になるだけ。
16進数を10進数に直す
では、「ABC」という16進数は10進数でいくつ?
A=3段目かつ10なので
10×16の2乗になる
10×16×16=2,560
B=2段目かつ11なので。
11掛ける16の1乗になる。
11×16=176
C=12
足すと=2,748です。
つまり、ABC=2,748という事ができます。
ぎょぇええ!
こんな問題出るのか?
普通に出ます。
回答は4〜5択と思われますが、外したらアウト!
一体なにに使うんだ何に?
コンピュータやネットワーク、WEBコーディングのカラーの表現などに頻繁に使います。
16進数の使われ方
例えばシルバーsilverは16進数で指示を出すと、
#「C0C0C0」となります。
10進数に直すと12632256になりますが、
2進数に直すと110000001100000011000000となり、コンピュータはこれを見て「シルバー」と判断できます。
もちろんコードを表記するプログラムの基準に準拠する必要はあります。
何故そうなるのか?
コンピュータは電気で動いている、のは知っていると思いますが、電気には電流・電圧があり「0の時は電流なし」「1の時は電流あり」電流の有る無しで動作します。
つまり、
「100110」は有り・無し・無し・有り・有り・無しとなる。
こんな単純な事を膨大に繰り返すことにより、最終的に答えを導くというわけです。
その他にも、近年拡大しているネットワークのIPアドレスではIPv6は全て16進数で表記させます。
例えば (2001:0db:0000:0000:320f:000:000:feo1)とか、
こんな感じで表記される(短縮は可能)
理由:2進数32ビットのIPv4アドレスでは2の32乗(約43億)の
アドレスが提供可能ですが現在の地球の人口は約75.3億人です、さらに会社などはIPアドレスを大量に使用します、故にIPアドレスが足りません。
したがって、16進数うを使うことによって、3.4×1036 という約340澗(カン)の数の割り当てが理論上可能なIPv6が使用されているのです。
10進数を16進数にするのにはどうすれば良いか?
基本原則:右から16の0乗、16の1乗、16の2乗と増えてゆく。
2進数の場合1を引くか、余りを右から記載すれば良かったのですが、16進数はそうはいかない。
何しろ、16を引いても何の役にも立たない。
したがって、計算機で16を掛けて近づけてから余りを求める必要があります。
例えば、556の場合。
計算機で556÷16=34.75と出る。
次に16×34=544と出る
余りは556ー544=12と出る
つまり、余りは12
右端に12=Cなので「C」と書く。
この時16で割った答えが34なので次は34を16で割る、
34÷16=32+2
「2」と書く、
次に、32÷16=2
ここで割り切れなくなる。
最後に割り切れなくなった「2」を書く。
(決まり、整数で計算する。)
答え:22C
なぜこうなるのか?
分解してみよう。
左端の2は3段目なので、16の2乗
2×16×16=512となる。
真ん中の2は2段目なので、16の1乗
2×16=32となる。
右端のCは10進数の12なので
12となる。
512+32+12=556となる。
わかっった?
一回では無理・無理!
もう一回行くよ!
「666」を16進数に直すとどうなる?
まず、
666を16で割る。
666÷16=41.625となる
41×16=656
666ー656=10
つまり、余りは10
10=Aなので
左端に「 A 」と書く。
この時41で割ったので、それを16で割る
41÷16=2.56・・
となるので、
41÷16=2+9
つまり、16×2と余りが「9」
ここで、余りをAの左側に書く
9Aとなる。
最後に2が余ったので
最後に2と書く、
「29A」となる。
分解してみよう。
左端の2は3段目の16進数なので16の2乗
2×16×16=512
真ん中の9は2段目なので16の1乗
9×16=144
最後のAは10進数にすると10なので
A=10
足すと、
512+144+10=666となる。
以上を言葉にまとめると・・・
まず、16で割る、割り切れた数(16割った整数部)をさらに16で割る。
それぞれの余りを右から書いてゆく、
最後に16で割り切れなかった数を左端に書く。
練習問題
問題:1285は16進数でいくつか?
1285÷16=80.3・・
1285ー80×16=5(余り5)
80÷16=5(余り0)
答え:505
問題:9895は16進数でいくつか?
9895÷16=618.4・・・
618×16=9888
9895−9888=7(余り7)
618÷16=38.6・・・
38×16=608
618−608=(余り10=A)
38÷16=2.3・・・
2×16=32
38ー32=6(余り6)
32÷16=2
答え:26A7
次回は2進少数がチラッと見えたが、スルーしてシステムの導入をサクッと覚えます。