二進法

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

二進法(にしんほう)とは、(てい、基(base)とも)として、底のの和で数を表現する方法である。

英語バイナリ (binary) というが、これはラテン語「binarius」に由来する語で、「binary」と「binarius」は本来「二個一組」「二つから成る」を意味する語である(用例:バイナリ空間分割)。

記数法[編集]

二進法で表された数のイメージ

を底とする位取り記数法二進記数法と呼ぶ。混乱を防ぐために二進法であることを示す場合には、下付の 2 を用いて (110)2 などとすることがある。二進記数法で

(各位の値 ai は 0 か 1)と表される数は二進法の定義から、

という数を表している(ここで 2 は十進法の 2 である)。

「二進記数法で記された数」という意味として二進数という語が使われることがある。しかし、二進数という数の体系(例えば「整数」といったような)があるわけではない。また、p進数における p = 2 の場合とは全く異なる。

二進法を用いれば 01 の二種類の数字のみで零を含む任意の自然数が表現可能であり、負号と合わせることで整数が表現可能である。更に小数点を合わせて四種類の記号のみで実数の表現が可能である。別の言い方をすると、「もし数字が 0 と 1 しか無かったら」を実現した方法が二進法である。

「数字が0と1しか無い」と、二倍を繰り返す度に桁が増えるので、桁の繰り上がりは「桁外れ」と呼べるほど速い。二倍の繰り返し=二の冪数で桁が繰り上がるので、「1に0が六つ付く=七桁(即ち六一桁)に突入する」数は、二進法は六十四だが、その次の三進法七百二十九であり、三進法より十一倍速い。倍を底にする六進法が三桁に突入する(1に0が二つ付く)数は三十六十進法が三桁に突入する数は十二進法が三桁に突入する数は百四十四だが、二進法は百四十四にも満たない百二十八で八桁に突入する(1に0が七個付く)。

そして、二進法では四千九十六で十三桁(即ち二六一桁)に突入する速さで、以後は六進法が1010となり七桁に突入する時点で、十進法は46656、十二進法は23000で五桁に過ぎないが、二進法は十六桁に突入している。そして、十進法が七桁に突入する時点で、六進法が八桁に対して、二進法は二十桁に突入している。十二進法が七桁に突入する時点で、二進法は二十二桁にまで膨らんでいる。

また、百四十四は十進法で「128 + 16」で「27 + 24」に分解でき、三十六は十進法で「32 + 4」で「25 + 22」に分解できる。従って、十進法の「144÷4 = 36」は以下のような表記になる。

  • 二進法:10010000 ÷ 100 = 100100
  • 三進法:12100 ÷ 11 = 1100
  • 六進法:400 ÷ 4 = 100
  • 十進法:144 ÷ 4 = 36
  • 十二進法:100 ÷ 4 = 30

同じく、六進法の144は二の六乗で「210 = 144」になるので、六進法の「144÷4 = 24」も以下のような表記になる。

  • 二進法:1000000 ÷ 100 = 10000
  • 三進法:2101 ÷ 11 = 121
  • 六進法:144 ÷ 4 = 24
  • 十進法:64 ÷ 4 = 16
  • 十二進法:54 ÷ 4 = 14

位数表[編集]

二進法の位取り
二進法の位数 二進数 三進数に換算 六進数に換算 十進数に換算 十二進数に換算
整数第七位 64の位 1000000 2101 144 64 54
整数第六位 32の位 100000 1012 52 32 28
整数第五位 16の位 10000 121 24 16 14
整数第四位 8の位 1000 22 12 8 8
整数第三位 4の位 100 11 4 4 4
整数第二位 2の位 10 2 2 2 2
整数第一位 1の位 1 1 1 1 1
小数第一位 1/2の位 0.1 1/2 0.3 0.5 0.6
小数第二位 1/4の位 0.01 1/11 0.13 0.25 0.3
小数第三位 1/8の位 0.001 1/22 0.043 0.125 0.16
小数第三位 1/16の位 0.0001 1/121 0.0213 0.0625 0.09
桁上がりの遅速
二進数の桁数 二進数 三進数に換算 六進数に換算 十進数に換算 十二進数に換算
22(346 1011 011001 000000 000000 12 121201 000000 144 000000 2 985984 1 000000
20(326 11 110100 001001 000000 1 212210 202001 33 233344 1 000000 402854
20(326 10 000001 101111 110001 1 000000 000000 15 220213 531441 217669
19(316 1 000000 000000 000000 111022 121001 5 341344 262144 107854
16(246 1011 011001 000000 2101 000000 1 000000 46656 23000
13(216 1 000000 000000 12 121201 30544 4096 2454
10(146 1011 011001 1 000000 3213 729 509
7(116 1 000000 2101 144 64 54

※ 桁は六つごとに区切る。位数と桁数は十進表記で、桁数は六進表記も副記する。

数列の進み方
二進法 三進法 六進法 十進法 十二進法
0 0 0 0 0
1 1 1 1 1
10 2 2 2 2
11 10 3 3 3
100 11 4 4 4
101 12 5 5 5
110 20 10 6 6
111 21 11 7 7
1000 22 12 8 8
1001 100 13 9 9
1010 101 14 10 A
1011 102 15 11 B
1100 110 20 12 10
1101 111 21 13 11
1110 112 22 14 12
1111 120 23 15 13
10000 121 24 16 14

小数と除算[編集]

二進法は因数2だけなので、1/31/5といった奇数分割ができない。二進表記で、1/3は 1÷(11)2 = 0.0101…となり、1/5も 1÷(101)2 = 0.00110011…の無限小数になる。偶数でも、といった「奇数で割り切れる偶数」では1を割り切れない。単位分数は、二の冪数を除いて全て割り切れない無限小数になる。

分数の小数換算値
単位分数 除数の素因数分解 二進小数 六進小数 十進小数
1/2 2 0.1 0.3 0.5
1/3 3 0.0101… 0.2 0.3333…
1/4 22 0.01 0.13 0.25
1/5 5 0.00110011… 0.1111… 0.2
1/6 2×3 0.001 0.1 0.1666…
1/7 7 0.001 0.0505… 0.142857
1/8 23 0.001 0.043 0.125
1/9 32 0.000111 0.04 0.1111…
1/10 2×5 0.00011 0.03333… 0.1
1/11 11 0.0001011101 0.0313452421 0.0909…
1/12 22×3 0.0001 0.03 0.08333…
1/16 24 0.0001 0.0213 0.0625
1/18 2×32 0.0000111 0.02 0.05555…
1/20 22×5 0.000011 0.01444… 0.05
1/25 52 0.00001010001111010111 0.01235 0.04
1/27 33 0.000010010111101101 0.012 0.037
1/32 25 0.00001 0.01043 0.03125
1/36 22×32 0.00000111 0.01 0.02777…
1/64 26 0.000001 0.003213 0.015625

※ 単位分数と除数の素因数分解は十進表記。

加算表[編集]

+ 0 1
0 0 1
1 1 10

デジタル機器での使用[編集]

電子式コンピュータ電子回路などのディジタル回路(ディジタル論理回路)、磁気ディスク等の記憶メディアでは、電圧の高低、磁極の N/S など、物理現象を二状態のみに縮退して扱う(離散化などと言う[注 1])ので、それに、真と偽の2つの値(2値の真理値)のみを使用する二値論理(しばしば、電子的には HL、論理的には TF という記号が使われる)をマッピングする。更にそこで数値を扱うには、それに「01」の二進法をマッピングするのが最適である。

もし、六進法を用いようとすると、「上と下、左と右、前と後」「0と1、2と3、4と5」「0と2と4、1と3と5」というように「ペアが三つ、トリオが二つ」で計種類(2×3)の状態が必要になる。同様に、十進法を用いようとすると種類(2×5)の状態が、十二進法を用いようとすると十二種類(22×3)の状態が必要となるが、これらは二の冪数ではないので都合が悪い。二進化十進表現を用いたり、電卓IBMPOWER のように十進法による直接演算機能を持つコンピュータもあるが、回路としては二値方式(二値論理方式)である。

多くの応用で見られるように数が有限の場合は、数学的に言うなら「有理数の部分集合」が表現されているわけであるが、通常は「有限精度の実数」が表現されている(数学的には、それはもはや実数ではないが)と解釈される。

負数の扱い[編集]

2種類の記号のみで、負の範囲の値(負の範囲の整数)も扱うには、広く一般的に用いられている方法は、最上位ビット(MSB)の重みを、2Nではなく −(2N) であるとするものである(2の補数を参照)。この方法は、そのビットパターンが、加減(及び、乗)の演算において特別な処理が不要なものになる、という特長を持つ。ただし、溢れ(オーバーフロー)の扱いが違ってくる(これは、例えばx86プロセッサにおける、キャリーフラグとオーバフローフラグの違いのことである(ステータスレジスタ#キャリーとオーバーフローを参照))。また固定長の場合に表現可能な範囲が、最小の値(負の側の絶対値が最大の値)のほうにひとつはみ出している、という扱いが面倒な場合がある特徴があって、たとえば8ビットで表現可能な範囲は −128, −127, 〜 −2, −1, 0, 1, 〜 126, 127 というようになっている。これに関しては、例えばC言語の標準規格のように、他の表現法も考慮し、全ての符号付き固定長のデータ型は、signed char であれば −128 までではなく −127 まで、などといった仕様になっている、といった場合がある。

他のN進法から二進法への変換方法[編集]

十進法から二進法への変換方法」などといったものを考える必要はない。どちらも数の「表現法」に過ぎないのだから、単に「表現法 → 数 → 表現法」といったようにして変換すれば良いのである。

命数法[編集]

二進命数法とは、2 を底とする命数法である。真の二進命数法では、二の冪数(2n)を意味する数詞があり、以下の表のように数はそれらの和で表される。

二進命数法の構造
二進数 二進命数法 十進命数法
0
1
10
11 二一
100
101 四一
110 四二
111 四二一
1000
1001 八一
1010 八二
1011 八二一 十一
1100 八四 十二
1101 八四一 十三

自然言語では、このような命数法はパプアニューギニアメルパ語[1] (Melpa) でのみ知られている[2]

二進数 十進数 メルパ語
1 1 tenta
10 2 ralg
11 3 raltika
100 4 timbakaka
101 5 timbakaka pamb ti
110 6 timbakaka pamb ralg
111 7 timbakakagul raltika
1000 8 engaka
1001 9 engaka pamb ti
1010 10 engaka pamb ralg pip

通常、二進法の数詞を持つとされるものは二つ組で数える体系であり、乗算が含まれないため、真の二進法ではない。以下にパプアニューギニアの南キワイ語[3] (Southern Kiwai) およびシッサノ語[4] (Sissano) の数詞を示す[2]

二進数 十進数 南キワイ語 シッサノ語
1 1 neis puntanen
10 2 netewa eltin
11 3 netewa nao eltin puntanen
100 4 netewa netewa eltin eltin
101 5 netewa netewa nao eltin eltin puntanen

その他[編集]

「パイント」「クォート」「ガロン」といった単位がある帝国単位#体積(一般的ではないが、より細かくこれらの間を二進的に埋める単位もある)が、コンピュータ以前のものとしては珍しく二進的である。

歴史[編集]

中国には古くから八卦六十四卦があり、それぞれ 3 ビットと 6 ビットに相当している。易経の六十四卦の配列は対応する整数の順になっていて、それらを 1→2→4→8→16→32→64 と進展させる「加一倍の法」を11世紀の儒学者邵雍が考案した。ただし、彼らがそれを整数(ないし、数)に対応するとして理解していたという証拠はない。その配列はそれぞれが二種類の値をとる要素の 6 タプル辞書式順序に並べたものと見ることもできる。

インドの学者ピンガラ (Pingala, 紀元前200年頃) は韻律を数学的に表現する方法を考案し、それが現在知られている最古の二進法の記述の一つとされている[5][6]

同様の二進法的組合せの使用は、アフリカのヨルバ人が行っていた占い Ifá にもあり、中世ヨーロッパやアフリカのジオマンシーにも見られる。2 を底とする体系はサハラ以南のアフリカでジオマンシーに長く使われていた。

1605年、フランシス・ベーコンはアルファベットの文字を2種の記号の列で表す体系を論じ、任意の無作為なテキストで微かに判別可能なフォントの変化に符号化できるとした。一般理論として彼が指摘した重要な点は、同じ方法をあらゆる物に適用できるという点であり、「2種類の異なる状態をそれらの物で表現できればよく、トランペット松明マスケットなど同様の性質があればどんなものでもよい」とした[7]。これをベーコンの暗号英語版と呼ぶ。

数学的に二進法を確立したのは17世紀ゴットフリート・ライプニッツで、"Explication de l'Arithmétique Binaire" という論文も発表している。ライプニッツは現代の二進法と同じく、1 と 0 を使って二進法を表した。ライプニッツは中国愛好家でもあり、後に「易経」を知って、その六十四卦に 000000 から 111111 を対応させ、彼の賞賛してきた中国の哲学的数学の偉大な成果の証拠だとした[8]

1800年代中頃、イギリスの数学者ジョージ・ブールブール代数ブール論理)により、二進的な数(ここで言う「数」は、数学的な広義の意味であり、普通の二進法の対象である、数値という意味ではない)の代数による命題論理の形式化を示した。

1936-1937年の中嶋章と榛沢正男による「継電器回路に於ける単部分路の等価変換の理論」、1937年のクロード・シャノンによる "A Symbolic Analysis of Relay and Switching Circuits" により相次いで、リレーのようなスイッチング素子による回路(ディジタル回路)の設計がブール代数によって行えることが示され、1940年代に始まり今日まで続くコンピュータの理論の基礎のひとつとなっている。

脚注[編集]

[ヘルプ]

注釈[編集]

  1. ^ 量子化とも言うが、量子物理におけるいわゆる量子のような意味(重ね合わせ状態など)ではない。

出典[編集]

  1. ^ Gordon, Raymond G., Jr., ed. (2005), “Melpa”, Ethnologue: Languages of the World (15 ed.), http://www.ethnologue.com/show_language.asp?code=med 2008年3月12日閲覧。 
  2. ^ a b Lean, Glendon Angove (1992). “TALLIES AND 2-CYCLE SYSTEMS”. Counting Systems of Papua New Guinea and Oceania. Ph.D. thesis, Papua New Guinea University of Technology. オリジナルの2007年9月5日時点によるアーカイブ。. https://web.archive.org/web/20160304132322/http://www.uog.ac.pg/glec/thesis/ch2web/ch2.htm. 
  3. ^ Gordon, Raymond G., Jr., ed. (2005), “Kiwai, Southern”, Ethnologue: Languages of the World (15 ed.), http://www.ethnologue.com/show_language.asp?code=kjd 2008年3月12日閲覧。 
  4. ^ Gordon, Raymond G., Jr., ed. (2005), “Sissano”, Ethnologue: Languages of the World (15 ed.), http://www.ethnologue.com/show_language.asp?code=sso 2008年3月12日閲覧。 
  5. ^ Sanchez, Julio; Canton, Maria P. (2007), Microcontroller programming : the microchip PIC, Boca Raton, Florida: CRC Press, p. 37, ISBN 0-8493-7189-9 
  6. ^ W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X
  7. ^ Bacon, Francis, The Advancement of Learning, 6, London, pp. Chapter 1, http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html 
  8. ^ Aiton, Eric J. (1985), Leibniz: A Biography, Taylor & Francis, pp. 245–8, ISBN 0-85274-470-6 

関連項目[編集]