2進数、16進数から10進数へ

私たちが普段使っている数字は10進数です。つまり、数字として「0,1,2,3,4,5,6,7,8,9」の10種類を用いて数を表すことができます。

このように、1つの桁に何種類の数字を使ってよいか、という決まりのことをn進数と呼びます(nには数が入ります)。

たとえば、2進数なら使える数字は2種類なので、「0,1」のみです。16進数だと16種類の数字を使えるので、「0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F」を用いることになります。この場合のA~Fは文字ではなく、数字の代わりになります。

n進数で押さえておきたい基本事項は、n進数で表された数を10進数に直すことと、反対に10進数の数をn進数に変換することです。この項では「n進数→10進数」について扱い、次項にて「10進数→n進数」について解説します。

また、特に2進数と16進数が出題されやすいのでこれらを例に説明しますが、2進数と16進数のやり方をしっかり押さえていればこれが5進数になっても8進数になっても同様の操作で対応することができます。

まずはわかりやすいところで10進数の話から入ります。10進数は普段使っている数字なのであまり意識はしていないかもしれませんが、たとえば「234」という数字は次のように分解できます。

234=200+30+4=2×102+3×101+4×100

最初に234をそれぞれの位に分けて(200と30と4)、続いて、それぞれの位を10の何乗か、という表現にしています。つまり、各位の数字に、一の位は10の0乗、十の位は10の1乗、百の位は10の2乗を掛けています。

10進数に限らずn進数はいつでもこのやり方が使えるので、この基本構成を覚えておけば、2進数や16進数を10進数に直すのは簡単です。

2進数→10進数

たとえば、2進数で(1001)2という数字を10進数に直す問題が出されたとします。

ところで、表示している数字が2進数であることを示すため、2進数は上記のように(xxxx)2と表現します。16進数でも同様に、(xxxx)16という書き方になります。

10進数のときは、一の位に10の0乗、十の位に10の1乗、百の位に10の2乗…と掛けていきましたが、2進数では、一の位に2の0乗、十の位に2の1乗、百の位に2の2乗…と掛けていきます。つまり、

(1001)2=1×23+0×22+0×21+1×20=8+0+0+1=(9)10

となります。ちなみに、普段は10進数の数字を(xxxx)10とは書きませんが、特に10進数であることを強調するときはこのように使います。

これがもう少し大きい数字になっても同じことです。たとえば、(1001101)2は、

(1001101)2=1×26+0×25+0×24+1×23+1×22+0×21+1×20=64+8+4+1=(77)10

となります。

16進数→10進数

16進数もやることは2進数のときと同じなのですが、AやBといったアルファベットを数字として見なすというのが、慣れていないと違和感を覚えるかもしれません。

16進数は「0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F」の16種類の数字を使うので、Aは10、Bは11…Fは15だと思ってください。ただし、10とか11とかいっても、桁が変わっているわけではない点に注意です。

たとえば、16進数で(51)16という数字を10進数に直す問題が出されたとします。これは10進数ではないので、素直に「ごじゅういち」と考えては間違いです。「ごじゅういち」の「じゅう」の部分がすでに10進数の考え方なので、これはあくまでも16進数の「ご・いち」です。

変換方法は2進数のときと同様です。16進数では、一の位に16の0乗、十の位に16の1乗、百の位に16の2乗…と掛けていきます。つまり、

(51)16=5×161+1×160=80+1=(81)10

となります。

アルファベットが入っても同じことです。たとえば、(13F)16は、

(13F)16=1×162+3×161+15×160=256+48+15=(319)10

となります。

コメント