10進法 2進法 8進法 16進法 N進法

ここでは様々な基数の位取り法について、基礎的なことを説明します。 10進数と2進数の変換等、各基数の変換については(こちら)のリンク先を見てください。

目次

位取り記数法
目次へ↑

私たちは普段、数を表記するのに「10進位取り記数法」、略して「10進法」という位取り(くらいどり)記数法を使っています。 位取り(positional notation)というのは、数字の位置によって「1の位の桁」「10の位の桁」「100の位の桁」等の桁を扱うシステムのことです。 10進法では { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } の10文字をどの桁の位置に配置するかによって、大きな数や小さな数を簡単に扱うことができます。

10進法を使わなくてもちゃんと数を表すことができれば何を使っても問題ありません。 12進法や20進法が使われてる文化もあります。 現代でも時間や角度の「分」や「秒」に60進法が使われています。 12や60には約数が多いので、分割する際に便利に使われてきました。

私たちは子どもの頃からの教育で10進法を叩き込まれているため、他の位取り法を扱うときに戸惑ってしまいます。 手を動かしながらじっくり取り組み、しっかり理解していけば他の位取り法も必ず習得できます。 とりあえずは、「これまでの固定観念を取り除く頭の体操」のような感覚で取り組んでみてください。

コンピュータや情報関係で使われる位取り記数法
目次へ↑

位取り記数法の文字数に対応している数、つまり、桁の基準になる数のことを基数(radix 又は base)といいます。 基数が自然数Nである位取り記数法を「N進法」といいます。 コンピュータ関係では「2進法」「8進法」「16進法」がよく使われます。

2進法(Binary Numeral System)
{ 0, 1 } の2文字を使う基数2の位取り記数法
2進法で表現された数値が2進数(Binary Number)
8進法(Octal Numeral System)
{ 0, 1, 2, 3, 4, 5, 6, 7 } の8文字を使う基数8の位取り記数法
8進法で表現された数値が8進数(Octal Number)
10進法(Decimal Numeral System)
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } の10文字を使う基数10の位取り記数法
10進法で表現された数値が10進数(Decimal Number)
16進法(Hexadecimal Numeral System)
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f } の16文字を使う基数16の位取り記数法
16進法で表現された数値が16進数(Hexadecimal Number)

10進法は10が基数で「10の束(たば)」「10の束の更に10の束、つまり100の束」等で桁を表現します。 2進法は2が基数で「2の束」「2の束の更に2の束、つまり4の束」等で桁を表現します。 このような束の階段は累乗指数を使うと綺麗に表現できます。

2進法を使うのは {電圧の高い,低い}{磁石の上向き,下向き}{光が反射する,反射しない} 等の現象を使って情報の違いを明確に表すのに便利だからです。 8進法と16進法に関しては2進法と相性が良いという理由でよく使われます。 2進法は使う文字が少ないため、10進法の九九に対応するものが 1× 1=1 しかありません。 そのため単純な電気回路の組み合わせで複雑な計算が可能になります。 単純な機械が処理するのに丁度良い位取り法というわけです。 しかし大きな数を扱うとなると、桁数がとても多くなり、人間が扱うには不向きです。 そこで、10進法に基数が近く、しかも2進法とも相性が良い8進法や16進法が便利になってくるわけです。

10進数 2進数 8進数 16進数 N進数 比較カウンタ
目次へ↑

まずは、桁上がりの感覚を掴んでおくと良いでしょう。 次のN進法の比較カウンタを利用してください。 1つずつ数を増やしたり減らしたりしながら桁上がりに注目して、何回も繰り返し数を数えてみましょう。


様々な基数(2から36)の「カウントアップ」「カウントダウン」を比較します。 数を数えながら眺めてみて、桁上がりの感覚をつかみましょう。

10進数 進数 進数 進数
000
自動更新秒 

10進法の数値と36進法の文字の対応表
10進法 0 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435
36進法0123456789abcdefghijklmnopqrstuvwxyz

10進数 2進数 8進数 16進数 N進数 対応表
目次へ↑

以下に10進数、2進数、8進数、16進数の対応表を示します。 桁上がりを意識して、数を数えながらスクロールバーを下して適当なところまで眺めてください。 表の横に並んでる数は見た目は違いますが同じ数を表しています。 例えば10進数の11と、2進数の1011と、8進数の13と、16進数のbは同じ数を表しています。


から までの範囲で
10進、 進、 進、 進数で

数値の読み方について
目次へ↑

10進法では 「0(ゼロ)」 「1(イチ)」 「2(ニ)」 ・・・ 「9(キュー)」の次に桁上がりが起こって 「10(イチ・ゼロ、又は、ジュウ)」になります。 普段使い慣れてるので問題ないと思います。 日本語の数詞の言語構造も10進法で最適化されています。 使い慣れすぎていて他の位取り法に移行するのが大変ですが要は慣れの問題です。

2進法では 「0(ゼロ)」 「1(イチ)」の次に桁上がりが起こって 「10(イチ・ゼロ、又は、ニ)」になります。 次に 「11(イチ・イチ、又は、サン)」ときて、その次の数は桁上がりが続けて起こって 「100(イチ・ゼロ・ゼロ、又は、ヨン)」になります。 どんな風に桁上がりが起こるのかを意識しながら何度もトライしてみてください。 桁上がりの感覚がつかめてくると、ちょっとだけ楽しくなってきます。

8進法では 「0(ゼロ)」 「1(イチ)」 「2(ニ)」 ・・・ 「7(ナナ)」の次に桁上がりが起こって 「10(イチ・ゼロ、又は、ハチ)」になります。 次に 「11(イチ・イチ、又は、キュー)」 「12(イチ・ニ、又は、ジュウ)」 ・・・ 「17(イチ・ナナ、又は、ジュウゴ)」ときて、その次に桁上がりが起こって 「20(ニ・ゼロ、又は、ジュウロク)」になります。

16進法では 「0(ゼロ)」 「1(イチ)」 「2(ニ)」 ・・・ 「9(キュー)」の次に桁上がりが起こらず 「a(エイ、又は、ジュウ)」になります。 次に 「b(ビー、又は、ジュウイチ)」 「c(スィー、又は、ジュウニ)」 「d(ディー、又は、ジュウサン)」 「e(イー、又は、ジュウヨン)」 「f(エフ、又は、ジュウゴ)」ときて、その次に 「10(イチ・ゼロ、又は、ジュウロク)」に桁上がりします。 次に 「11(イチ・イチ、又は、ジュウナナ)」 「12(イチ・ニ、又は、ジュウハチ)」 ・・・ 「1e(イチ・イー、又は、サンジュウ)」 「1f(イチ・エフ、又は、サンジュウイチ)」ときて 「20(ニ・ゼロ、又は、サンジュウニ)」に桁上がりします。

上の例では数の読み方を()内に書きました。 小さい字の「又はの右にはその数に対する日本語の固有名詞を書きましたが、10進数とごっちゃになってかえって分かりにくくなってしまいますね。 この読み方は使わない方が良いでしょう。 普段は 「23a5(ニ・サン・エイ・ゴ)」のように読んで、 必要な時に、対応する10進数を計算で求めるのが良いでしょう。

基数変換
目次へ↑

基数を変えるにはちょっとした変換計算を行います。 この変換計算のことを基数変換といいます。 情報系の資格を取る人はどんな値でも変換計算できるようにしておくことが重要です。 (基数変換)のリンク先で手計算でのやり方を説明します。 変換計算ができるようになると、コンピュータの気持ちが分かるようになります。

Windows アクセサリの「電卓」アプリには、[表示(V)]→[プログラマ(P)]とクリックすることでプログラマ電卓を利用できます。 [10進]状態で数値を打ち込んで[2進]のラジオボタンを押せば10進数を2進数に変換できます。 答え合わせに利用すると良いでしょう。

ビットとバイト
目次へ↑

2進数の1桁のことを1ビット(bit:binary digit の略)と呼びます。 2進数を数桁をまとめたものを1バイト(byte)と呼びます。 byte の元々の意味は「噛む、食いつく」です。 1バイトはコンピュータが一回で処理するデータ量を表す基本単位でした。 コンピュータの黎明期では1バイトが6ビットだったり7ビットだったりしていましたが、そのうち8ビットが主流になりました。 その後処理の基本単位が16ビットや32ビットに拡張されていきましたが、8ビットで1バイトというのが世界中に広まってしまったので、現在では8ビット1バイトになっています。 8ビットで1バイトが正式に決められたのは2008年になります。 正式に決められるまでに時間がかかったので、誤解を避けるために8ビットのことを1バイトという言い方を避けて、オクテット(octet)という言い方をすることがあります。

ビット(bit)の省略表記には「小文字の b」が使われます。 バイト(Byte)の省略表記には「大文字の B」が使われます。

10進法と2進法の基数変換にはちょっとした変換計算が必要です。 ところが、2進法、8進法、16進法の基数変換には変換計算が必要ありません。 対応表を見ると分かると思いますが、2進法を3桁の塊でみれば8進法、2進法を4桁の塊で見れば16進法になります。 (これは 23 = 824 = 16 の関係があるからです。) 「2進法の3桁と8進法の1桁の対応表」、「2進法の4桁と16進法の1桁の対応表」があれば何桁の数でも計算せずに対応が分かるというわけです。 2進法では表示するのに桁数が沢山必要です。 人間が扱うには2進法より8進法や16進法の方が10進法により近くて扱いやすいです。

16進法は2桁で丁度1バイト(8ビット)になるので16進法は2桁の塊で扱うことがよくあります。 文字コードカラーコードコンピュータの内部メモリの表現等に使われます。

接頭辞
目次へ↑

接頭辞 (prefix) とは、単語の頭にひっつけて、続く単語を修飾(説明したり、変化させたり、強調したり、限定したり)する言葉です。接頭語ともいいます。

数に関しても様々な接頭辞があり、国際単位系(SI)では 長さの単位 m(メートル)の前に c(センチ)をつけて cm (センチメートル)とすることで、百分の一メートルを表すことになります。 メートルの単位に乗数 10-2 を掛け算した単位、つまりメートルの百分の一の単位になるということです。 この接頭辞を使うことで、大きな単位や小さな単位をスッキリと表現することになります。 主なSI接頭辞を表にすると以下のようになります。

接頭辞の名称記号乗数乗数乗数
ヨタ (yotta)Y1024100081 000 000 000 000 000 000 000 000
ゼタ (zetta)Z1021100071 000 000 000 000 000 000 000
エクサ (exa)E1018100061 000 000 000 000 000 000
ペタ (peta)P1015100051 000 000 000 000 000
テラ (tera)T1012100041 000 000 000 000
ギガ (giga)G109100031 000 000 000
メガ (mega)M106100021 000 000
キロ (kilo)k103100011 000
ヘクト (hecto)h102100
デカ (deca)da10110
100100001
デシ (deci)d10-10.1
センチ (centi)c10-20.01
ミリ (milli)m10-31000-10.001
マイクロ (micro)μ10-61000-20.000 001
ナノ (nano)n10-91000-30.000 000 001
ピコ (pico)p10-121000-40.000 000 000 001
フェムト (femto)f10-151000-50.000 000 000 000 001
アト (atto)a10-181000-60.000 000 000 000 000 001
ゼプト (zepto)z10-211000-70.000 000 000 000 000 000 001
ヨクト (yocto)y10-241000-80.000 000 000 000 000 000 000 001

コンピュータ関係や情報系では2進法のための2進接頭辞というものが使われます。 接頭辞は 210=1024 倍ごとに名称がつけられています。 これはSI接頭辞の1000倍に一番近い値を採用したからです。 1KB(一キロバイト)は 1024B(千二十四バイト)、1MB(一メガバイト)は 1024KB(千二十四キロバイト)、つまり 10242B = 1048576B(百四万八千五百七十六バイト)になります。 主な2進接頭辞を表にすると以下のようになります。 名称はSIと同じ名称を使います。 記号のキロに関しては大文字を用います。 同じ名称ですが、大きな単位になっていくとSIとの乖離が大きくなります。 キロでは2.4%程度2進接頭辞の方が大きいだけなのですが、ヨタになると20.9%も2進接頭辞の方が大きくなります。

接頭辞の名称記号乗数乗数乗数
ヨタ (yotta)Y280102481 208 925 819 614 629 174 706 176
ゼタ (zetta)Z270102471 180 591 620 717 411 303 424
エクサ (exa)E260102461 152 921 504 606 846 976
ペタ (peta)P250102451 125 899 906 842 624
テラ (tera)T240102441 099 511 627 776
ギガ (giga)G230102431 073 741 824
メガ (mega)M220102421 048 576
キロ (kilo)K210102411 024
29512
28256
27128
2664
2532
2416
238
224
212
20102401


(藤本の担当講義に戻る)    (Tipsに戻る)