コンピュータ

16進数
○16進数とは
16進数の説明の前に、まずは身近な数字について考えたいと思います。 普段の生活で目にする数字は、ほとんどが0,1,2,3,4,5,6,7,8,9の10個の数字の組み合わせです。 例えば、お店では品物の値段が100円や498円、 車の速度は40km/hや65km/hなど・・・全て0〜9の数字の組み合わせですね。
もう少し細かいことまで考えてみます。 これらの数は0の次は1、1の次は2、・・・8の次は9となっており、 9の次は使える数字がなくなり、一つ桁を増やして10となります。 つまり、数が0から9に増えていき、9までいくと一つ上の桁の数が増えてまた0からになります。
このように、10個の数字を使って表す数を10進数と言います。 10進数は子供の頃から扱ってきた数なのでどのように表されるかは分かると思います。 例えば9の次は10、19の次は20、99の次は100、・・・となります。

16進数も考え方は10進数と同じです。
16進数は0〜9,A,B,C,D,E,Fの16個の数字を使って表されます。 16進数では9の次は10ではなく、9の次はAとなります。 Aの次はB、Bの次はC、・・・Eの次はFとなります。 そして、Fの次は10となります。
また、10進数と16進数の数は対応しており、 10進数の10と16進数のAは同じ値となります。 例えば10円という値を表す場合、10進数で表す場合は10円、 16進数で表す場合はA円となります。 つまり、10進数や16進数というのは値を表す方法ということです。
ちなみに、10進数と16進数の対応は以下のようになります。

10進数16進数10進数16進数
0099
1110A
2211B
3312C
4413D
5514E
6615F
771610
8810064


16進数での計算方法を次に説明します。

〜補足〜
10進数と16進数の値を区別する際には、 10進数の場合には数字の後ろにdや(10)を付け、 16進数の場合には数字の後ろにhや(16)を付けて表現します。
例えば10という値を表現する場合、 10進数では10d、16進数ではAhという表記になります。
(10進数は英語でdecimal、16進数はhexadecimalであり、その頭文字からきています)
また、10hという値を読むときには「じゅう」ではなく「いちぜろ」と 読むようにしたほうが他の人との会話で混乱しないと思います。
○16進数の計算方法
ここでは16進数の足し算について説明します。
しかし、説明するよりは計算例を見せるほうが分かりやすいと思うので、 まずは以下に計算例をいくつか示します。(全て16進数の計算です)

1+1=2
9+1=A
A+3=D
F+2=11
B+C=17
11+4=15
15+6=1B
1D+A=27
EF+3=F2
FF+5=104

これらの計算は一度10進数に変換してから計算すると分かりやすいと思います。
まずは10進数から16進数への変換についてです。
例えば1000dという値を変換する場合、まず1000dを16dで割ります。 1000d/16d=62d 余り8dとなります。
62dは16d以上なので、さらに62dを16dで割ります。 62d/16d=3d 余り14dとなります。
3dは16dより小さいので計算はここで終わりです。
ここまで計算した余りと最後の結果を並べると、8d,14d,3dとなります。 これを16進数に変換すると8h,Eh,3hとなり、これを逆から並べると3E8hとなり、 この値が1000dを16進数に変換した値になります。(下図参照)




次に16進数から10進数への変換についてです。
先ほど計算した3E8hを変換する場合、まずは1桁目の値を10進数に変換すると8hは8dとなります。 次に2桁目の値を10進数に変換すると14dとなりこれに16dをかけて、 14d*16d=224dとなります。 さらに3桁目の値を10進数に変換すると3dとなりこれに16dを2回かけて、 3d*16d*16d=768dとなります。
計算された結果を全て足すと、8d+224d+768d=1000dとなり、 この値が3E8hを10進数に変換した値になります。(下図参照)




16進数の計算を行う電卓というものもあります。
Windowsを使用しているのであれば標準でついている電卓でも計算できます。 「スタート」->「プログラム」->「アクセサリ」->「電卓」で電卓を実行します。 メニューの「表示」->「関数電卓」を選択すると電卓の画面が変わります。 画面中に「16進」や「10進」などのラジオボタンがあるので、「16進」を選択します。 これで16進数の計算ができるようになります。
また、「10進」を選択して10と入力し、そのままで「16進」を選択するとAと表示されます。 つまり、16進数と10進数との変換にも使うことができるので大変便利です。

16進数についての説明はここまでですが、次に2進数についての説明をします。
○2進数と16進数
ここまで16進数の説明をしましたが、16進数がどのようなところで使われるかというと、 コンピュータの世界ではほぼ全てが16進数で表されます。 ではなぜ16進数が使われるのでしょうか?
コンピュータは電気で動作しており、 電圧の高さを0,1で扱うことで様々な処理を行っています。 0と1の2個の数字を使っているということは、 コンピュータでは2進数の計算が行われているということになります。 しかし、人間が2進数をそのまま扱うと桁数が膨大になる上、0と1だけでは分かりにくいので、 2進数との変換が容易にできる16進数を使って計算します。
(ちなみに2進数を表記する場合は数字の後ろにbか(2)を付けます)

まずは2進数と16進数の変換方法について説明します。
細かい計算をするよりは1桁の16進数の数の対応を覚えたほうが便利だと思いますので、 以下の対応表を使って変換していきます。

16進数2進数16進数2進数
0000081000
1000191001
20010A1010
30011B1011
40100C1100
50101D1101
60110E1110
70111F1111


16進数から2進数への変換はとても簡単で、 例えば7Ahという値を変換する場合、7とAをそれぞれ上の表に従って変換します。 7は0111、Aは1010なので7Ahは01111010bとなります。
逆の01111010bという変換も簡単で、 4桁ずつで区切ってそれぞれを上の表に従って変換します。 0111は7、1010はAなので01111010bは7Ahとなります。 4桁ない場合は先頭に0を付けて同じように変換します。

2進数と16進数の値は簡単に変換できるのでどちらを扱ってもいいのですが、 人間が扱いやすい16進数の値を使ったほうがよいと思います。 実際、コンピュータ関連の書籍ではよく16進数の数字が出てきます。 しかし、2進数を使ったほうが分かりやすい場合もあります。
ここからはゲームに関する話に変わりますが、 例えばRPGのゲームでプレイヤーの状態に毒、混乱、気絶という状態があったとします。 この3つの状態は1つの状態だけ変化するのではなく、 毒・混乱・気絶の全ての状態になる場合があるとします。
これはいわゆる"フラグ"と呼ばれる処理で、 毒のフラグ、混乱のフラグ、気絶のフラグの3つのフラグがあります。 毒のフラグがONになっている場合は毒の状態になる、というわけです。 これら3つのフラグは全て独立していて、 混乱のフラグがONだろうがOFFだろうが、毒のフラグがONであれば毒状態になります。
このフラグという処理を実現する場合には2進数の考え方が非常に便利です。 2進数は0と1の数字しか扱わず、0をOFF、1をONと考えれば、 2進数の1桁が一つのフラグに相当すると考えることができます。
例えば4桁の2進数を考えたときに、1桁目を毒、2桁目を混乱、3桁目を気絶に割り当てます。 この状態で数字を0001bにすれば毒の状態になり、0010bにすれば混乱の状態になります。 さらに0011bにすれば毒・混乱の状態になり、0111bにすれば毒・混乱・気絶の状態になります。
このことから分かるように、状態を変更したい場合は該当する値を0か1にすればよいわけです。 ここから16進数へ変換すれば、毒・混乱・気絶の状態にするには値を7hにすることになります。
ゲームでは様々な状態を持っていて一つ一つ管理しなくてはいけません。 その場合には上記のようにそれぞれの状態を2進数で考えると分かりやすいので、 16進数と合わせて、2進数の考え方も理解しておいたほうが良いと思います。
更新履歴
サイトメニュー

人気ページ
商品リンク
管理人おすすめ
当サイトは管理人TATSU、副管理人MIA
によって運営されています。
☆メールによるお問い合わせはコチラ