二進記数法
出典: フリー百科事典『ウィキペディア(Wikipedia)』
2進(位取り)記数法(にしん-くらいどり-きすうほう)あるいは簡単に2進法(にしんほう)は、数の表現方法の一つで、2を基数とする位取り記数法である。つまり、2個の数字のみを用いる記数法である。
2進法をバイナリー([英]binary、[拉]binarius)ともいうが、これは「2個一組」や「2単位」を意味する単語である。
目次 |
[編集] 二進法の歴史
オリエント文明の数学が、ヨーロッパに伝わり、ヨーロッパで二進法が開発された。後に、二進法によってコンピューター言語の基礎がつくられ、現代文明の基盤が築き上げられた。
「ライプニッツが八卦をヒントに発明した」という簡潔な説明が有名だが、これは事実を正確に表しているとは言えない。ライプニッツが記号論理学を研究中に八卦を見て、二進による計算が含まれていることを見出した、という程度。(詳しくはライプニッツの項を参照)
[編集] 概要
2進法の位取りは、“1 + 1 = 10”と表記する事であり、二進法で
(各位の値 ai は 0 か 1)と表される数は二進記数法の定義から、
という数を表している(ここでの 2 は 1 + 1 と等しい数を表す記号。本質的には、数そのものはどの位取りを採用するかには関係なく定まる)。
0 と 1 の二個の数字だけで数を表記する方法は2進表記といわれ、2進表記で記された数を 2進数ということがある。しかし、二進数という数の体系があると誤解を受けやすいので注意が必要である。また、2進数と呼ぶと、2進数(p-進数の p = 2 の場合)と紛らわしいが全く異なる数体系である。
二進法を用いれば、0(白)と 1(黒)の二種類の文字のみで、零を含む任意の自然数が表現可能であり、負号と合わせることで整数が表現可能である。更に小数点を合わせて四種類の記号のみで実数の表現が可能である。
コンピュータ的で、2種類で割り切る点から;転じて、単一の価値観で、「白か黒か」で物事を割り切ろうとする発想を、俗に「2進法」と呼ぶこともある。用例:「イエスかノーかの二進法」
[編集] 機器での使用
多くの応用で見られるように桁数が有限の場合は、より限定的には有理数の部分集合 が表現されているわけであるが、通常は「有限精度の実数」が表現されていると解釈される。
機械、殊にコンピュータの内部で数値を表現する場合、10進法を用いようとすると 0, 1, 2,3,…, 9 の十種類の文字に対応する10種類の内部状態を区別しなければならない。これは機構を無用に複雑にするので、現代のデジタルコンピュータは通常は2進法を採用し、0 と 1 のみによって数値を表現している。
典型的には、コンデンサを用いて 0 に低電位状態を 1 に高電位状態を対応させたり、磁化した鉄微粒子を用いて、0 に S 極を、1 に N 極を対応させたりする。
このように、2種類の状態のうちいずれかを取る物理現象は多いので、二進法は機械に数値を扱わせるのに適している。
[編集] 機器での負の数の扱い
コンピュータ等で負の整数を扱う場合、一般的に用いられている方法は1番上位のビット(桁)を符号の用に扱い、すべてのビットが1のものを「-1」とする方法である (2の補数参照)。「-2」は一番下位のビットが0になる。8ビットの場合(二進で8桁まで扱える場合)、「-1」は「111111112」、「-2」は「111111102」として扱われている。この方法は、「111111102 + 12 = 111111112」となり、加減乗の演算において特別な処理が不要であるという特徴を持つ。(ただし、一番上位のビットで繰り上がり等が生じた場合に9ビット目より上を捨てて演算することになる。また「100000002」は-128とされることが多いが、正式には決まってない。例えばC言語等では符号付8ビットの数は「-127~127」の数字を扱えるとされていて正式には「-128」に対応してない。)
[編集] 十進法から二進法への変換方法
[編集] 正の整数
正の整数mを十進法から二進法に変換するのは、次のようにする。ここで、「A進法の数B」を「BA」と書くことにする。
- 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~10 が二進法のいくつになるか分っていれば、次のような計算で求めることも出来る。
この方法は小数がある場合も有効である。
[編集] 正で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 」 は、それ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで、永久に終わらないことがわかる。すなわち小数部の「0011」が循環することがわかるので終了する。
よって0.110=0.0001100110011…2=0.000112
[編集] 類似の表記法
ドナルド・クヌースは基数が -2 と -1+i (iは虚数単位)のものを考案している。いずれも各位が0か1で構成されるものである。これらの表記は計算が複雑なため、良い表記法とは考えられていない。
[編集] 基数が -2 の表記法
は二進記数法の概要と同様に
という数字を表している。よって、 -210=10-2 であり、410=100-2 となる。210については十進法から二進法への変換方法と同様の計算を行うと、
-2| 2
-2|-1. . .0
-2| 1. . .1
0. . .1
となるので 210=110-2 である。余りが0か1でなければならないことに注意すれば比較的簡単に求められる。
演算については、掛け算は二進記数法と同じ方法でよい。足し算と引き算では四進的な振る舞いをし下表のようになる。(なお引き算は「左-上」である。)実際には、繰上りが生じると上の位から1を引き、繰下りが生じると上の位に1を足す。
足し算 | 引き算 | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
比較(どちらの数が大きいか)についても
- 01>00>11>10
となるので2桁区切りで考えると分りやすい。
割り算についてはかなり複雑である。
[編集] 基数が -1+i の表記法
この表記法では 1-1+i=110 、 10-1+i=-1+i10 、 100-1+i=-2i10 、 1000-1+i=2+2i10 となり、各桁で 1-1+i+1-1+i=1100-1+i 、 111-1+i+11-1+i=0-1+i が成り立つ。十進からこの表記に変換するのは計算が若干複雑である。ある数 x+yi を -1+i で割ると、商が p+qi 、 余りを c の場合(x , y , p , q は整数。)
と表せられる。分母分子に -1 - i をかけると、
の2式が得られる。 -x+y が奇数なら -x-y も奇数であるから、 x+y が奇数のとき c = 1 であり、偶数のとき c = 0 である。
[編集] 十進法との対応
十進表記 | 二進表記 | -2進表記 | |
---|---|---|---|
正の数 | 負の数 | ||
0 | 0 | 0 | |
1 | 1 | 1 | 11 |
2 | 10 | 110 | 10 |
3 | 11 | 111 | 1101 |
4 | 100 | 100 | 1100 |
5 | 101 | 101 | 1011 |
6 | 110 | 11010 | 1110 |
7 | 111 | 11011 | 1001 |
8 | 1000 | 11000 | 1000 |
9 | 1001 | 11001 | 1011 |
10 | 1010 | 11110 | 1010 |
11 | 1011 | 11111 | 110101 |
12 | 1100 | 11100 | 110100 |
13 | 1101 | 11101 | 110111 |
14 | 1110 | 10010 | 110110 |
15 | 1111 | 10011 | 110001 |
[編集] 関連項目
- 位取り記数法
- 2の累乗数
- 一進記数法
- 三進記数法
- 八進記数法
- 十進記数法
- 十二進記数法
- 十六進記数法
- 二十進記数法
- 六十進記数法
- 1の補数
- 2の補数表現 - 符号を用いず負の整数への拡張を行う
- 固定小数点数
- 浮動小数点数 - 小数点を用いず実数への拡張を行う
- 先天図
- 二進化十進表現
- 2進接頭辞
[編集] 外部リンク