二進法
出典: フリー百科事典『ウィキペディア(Wikipedia)』
二進法(にしんほう)とは、2 を底(てい)とし、底およびその冪を基準にして数を表す方法である。
二進法を英語でバイナリー (binary) というが、これは二個一組や二単位を意味する語である。
目次 |
[編集] 歴史
二進法的な考えは、古代インドの学者ピンガラ (Pingala) や易の八卦・六十四卦に見られるが、数学的に二進法を確立したのはライプニッツである。ライプニッツは二進記数法の発明の後に易を知り、二進法的な発想をそこに見出した。
[編集] 記数法
2 を底とする位取り記数法を二進記数法と呼ぶ。十進法と区別するときは下付の 2 を用いて、(110)2 とする。二進記数法で
(各位の値 ai は 0 か 1)と表される数は二進法の定義から、
という数を表している(ここで 2 は十進法の 2 である)。
二進記数法で記された数を二進数ということがある。二進数という数の体系があるわけではない。また、p進数における p = 2 の場合とは全く異なる。
二進法を用いれば 0 と 1 の二種類の数字のみで零を含む任意の自然数が表現可能であり、負号と合わせることで整数が表現可能である。更に小数点を合わせて 4 種類の記号のみで実数の表現が可能である。
0 か 1 かで表すことから、転じて単一の価値観で白か黒かで物事を割り切ろうとする発想を俗に「二進法」と呼ぶ。
[編集] 機器での使用
集積回路などのデジタル回路、ハードディスクなどの磁気ディスクでは、電圧の高低、磁極の N/S など、二値の物理現象を用いるため、数を二進法で表すのが最適である。コンピュータの内部で数値を表現する場合、十進法を用いると 0 から 9 の十種類の数字に対応する十種類の内部状態を区別しなければならない。これは機構を複雑にするので、現代のデジタルコンピュータは通常は二進法を採用し、0 と 1 のみによって数値を表現している。入出力で十進法を用いるときは一般に十進法と二進法とで変換を行う。二進化十進表現を用いたり、IBM の POWER のように十進法による直接演算機能を持つコンピュータもあるが、回路としては二値を用いている。
多くの応用で見られるように桁数が有限の場合はより限定的には有理数の部分集合が表現されているわけであるが、通常は「有限精度の実数」が表現されていると解釈される。
[編集] 機器での負の数の扱い
符号付数値表現も参照
コンピュータ等で負の整数を扱う場合、一般的に用いられている方法は1番上位のビット(桁)を符号の用に扱い、すべてのビットが 1 のものを -1 とする方法である(2の補数を参照)。-2 は最下位ビットが 0 になる。8 ビットの場合(二進で 8 桁まで扱える場合)、-1 は 111111112、-2 は 111111102 として扱われている。この方法は 111111102 + 12 = 111111112 となり、加減乗の演算において特別な処理が不要であるという特徴を持つ。ただし、最上位ビットで繰り上がり・繰り下がりが生じた場合に 9 ビット目より上を捨てて演算することになる。また 100000002 は -128 とされることが多いが、正式には決まってない。例えばC言語等では符号付 8 ビットの数は -127 から 127 の数を扱えるとされ、正式には -128 に対応していない。
[編集] 十進法から二進法への変換方法
[編集] 正の整数
正の整数 m を十進法から二進法に変換するのは次のようにする。
- m を x に代入する。
- x を 2 で割って、余りを求める。
- x/2 の商を x に代入する。
- x = 0 であれば終了。
- 2. に戻る。
余りを求めた順の逆に並べると、それが二進法に変換された結果になる。
計算の例: 192 を二進法に変換する。
2|192
2| 96. . .0
2| 48. . .0
2| 24. . .0
2| 12. . .0
2| 6. . .0
2| 3. . .0
2| 1. . .1
0. . .1
よって 19210 = 110000002 である。
[編集] 正で 1 未満の数
正で 1 未満 (0 < m < 1) である数 m を十進法から二進法に変換するのは次のようにする。
- 1 を n に、m を x に代入する。
- 2x < 1 ならば、小数点以下第 n 位は 0 になる。2x > 1 ならば、小数点以下第 n 位は 1 になる。
- 2x = 1 ならば終了。
- 2x > 1 ならば 2x - 1 を x に代入する。2x < 1 ならば 2x を x に代入する。
- n + 1 を n に代入する。
- 小数点以下の桁数が必要な桁数まで求まっているか、循環小数となったら終了する。
- 2. へ戻る。
計算の例1: 1/3 を二進法に変換する。
-
処理 (途中)結果 0. 0.0 0.01 0.010
ここで「処理」の部分の最後「」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「01」が循環することがわかるので終了する。
よって1/310=0.010101…2=0.012
(なお、アンダーバーの部分(01)は無限に繰り返しという意味)
計算の例 2: 十進法での 0.1 を二進法に変換する。
-
処理 (途中)結果 0.1 0. 0.1×2=0.2<1 0.0 0.2×2=0.4<1 0.00 0.4×2=0.8<1 0.000 0.8×2=1.6≥1 0.0001 0.6×2=1.2≥1 0.00011 0.2×2=0.4<1 0.000110 0.4×2=0.8<1 0.0001100
ここで「処理」の部分の最後「0.4×2 = 0.8 < 1」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「0011」が循環することがわかるので終了する。
よって 0.110 = 0.0001100110011…2 = 0.000112 である。
[編集] 十進法との対応
十進表記 | 二進表記 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
[編集] 命数法
二進命数法とは、2 を底とする命数法である。真の二進命数法では、2n に対応する数詞があり、数はそれらの和で表される。自然言語では、このような命数法はパプアニューギニアのメルパ語[1] (Melpa) でのみ知られている[2]。
メルパ語 | |
---|---|
1 | tenta |
2 | ralg |
3 | raltika |
4 | timbakaka |
5 | timbakaka pamb ti |
6 | timbakaka pamb ralg |
7 | timbakakagul raltika |
8 | engaka |
9 | engaka pamb ti |
10 | engaka pamb ralg pip |
通常、二進法の数詞を持つとされるものは二つ組で数える体系であり、乗算が含まれないため、真の二進法ではない。以下にパプアニューギニアの南キワイ語[3] (Southern Kiwai) およびシッサノ語[4] (Sissano) の数詞を示す[2]。
南キワイ語 | シッサノ語 | |
---|---|---|
1 | neis | puntanen |
2 | netewa | eltin |
3 | netewa nao | eltin puntanen |
4 | netewa netewa | eltin eltin |
5 | netewa netewa nao | eltin eltin puntanen |
[編集] 参考文献
- ^ Gordon, Raymond G., Jr., ed. (2005), "Melpa", Ethnologue: Languages of the World (15 ed.). 2008-03-12 閲覧
- ^ 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
- ^ Gordon, Raymond G., Jr., ed. (2005), "Kiwai, Southern", Ethnologue: Languages of the World (15 ed.). 2008-03-12 閲覧
- ^ Gordon, Raymond G., Jr., ed. (2005), "Sissano", Ethnologue: Languages of the World (15 ed.). 2008-03-12 閲覧
[編集] 関連項目