二進法 wikipedia|無料辞書
二進法(にしんほう)とは、
2 を
底(てい)とし、底およびその
冪を基準にして数を表す方法である。
二進法を
英語で
バイナリー(
binary) というが、これは二個一組や二単位を意味する
語である。
◆ 歴史
二進法的な考えは、古代
インドの学者
ピンガラ () や
易の
八卦・
六十四卦に見られるが、数学的に二進法を確立したのは
ライプニッツである。ライプニッツは二進記数法の発明の後に易を知り、二進法的な発想をそこに見出した。
◆ 記数法
2 を底とする
位取り記数法を
二進記数法と呼ぶ。十進法と区別するときは下付の 2 を用いて、(110)
2 とする。二進記数法で
:
(各位の値 ai は 0 か 1)と表される数は二進法の定義から、
:
a_1 2 + a_0 + \over 2 --> + \over 2^2 --> + \cdots
という数を表している(ここで 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 は 11111111
2、-2 は 11111110
2 として扱われている。この方法は 11111110
2 + 1
2 = 11111111
2 となり、加減乗の演算において特別な処理が不要であるという特徴を持つ。ただし、最上位ビットで繰り上がり・繰り下がりが生じた場合に 9 ビット目より上を捨てて演算することになる。また 10000000
2 は -128 とされることが多いが、正式には決まっていない。例えば
C言語等では符号付 8 ビットの数は -127 から 127 の数を扱えるとされ、正式には -128 に対応していない。
◆ 十進法から二進法への変換方法
◇ 正の整数
正の整数 m を十進法から二進法に変換するのは次のようにする。
# m を x に代入する。
# x を 2 で割って、余りを求める。
# x/2 の商を x に代入する。
# x = 0 であれば終了。
# 2. に戻る。
余りを求めた順の逆に並べると、それが二進法に変換された結果になる。
2|192 192=20×192
2| 96. . .0 192=21×96+20×0
2| 48. . .0 192=22×48+21×0+20×0
2| 24. . .0 192=23×24+22×0+21×0+20×0
2| 12. . .0 192=24×12+23×0+22×0+21×0+20×0
2| 6. . .0 192=25× 6+24×0+23×0+22×0+21×0+20×0
2| 3. . .0 192=26× 3+25×0+24×0+23×0+22×0+21×0+20×0
2| 1. . .1 192=27× 1+26×1+25×0+24×0+23×0+22×0+21×0+20×0
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 を二進法に変換する。
: \frac \end||0.
|-
|||0.0
|-
|||0.01
|-
|||0.010
| -->
ここで「処理」の部分の最後「」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「01」が循環することがわかるので終了する。
よって1/310=0.010101…2=0.012
(なお、アンダーバーの部分(01)は無限に繰り返しという意味)
計算の例 2: 十進法での 0.1 を二進法に変換する。
: