LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

二進法

二進法(にしんほう)とは、2 を底(てい)とし、底およびその冪を基準にして数を表す方法である。英語でバイナリ (binary) という。binaryという語には「二進法」の他に「二個一組」「二個単位」といったような語義もある(例: バイナリ空間分割)。中国には古くから易の八卦や六十四卦があり、それぞれ 3 ビットと 6 ビットに相当している。易経の六十四卦の配列は対応する整数の順になっていて、それらを 1→2→4→8→16→32→64 と進展させる「加一倍の法」を11世紀の儒学者邵雍が考案した。ただし、彼らがそれを整数(ないし、数)に対応するとして理解していたという証拠はない。その配列はそれぞれが二種類の値をとる要素の 6 タプルを辞書式順序に並べたものと見ることもできる。インドの学者ピンガラ (, 紀元前200年頃) は韻律を数学的に表現する方法を考案し、それが現在知られている最古の二進法の記述の一つとされている。同様の二進法的組合せの使用は、アフリカのヨルバ人が行っていた占い にもあり、中世ヨーロッパやアフリカのジオマンシーにも見られる。2 を底とする体系はサハラ以南のアフリカでジオマンシーに長く使われていた。1605年、フランシス・ベーコンはアルファベットの文字を2種の記号の列で表す体系を論じ、任意の無作為なテキストで微かに判別可能なフォントの変化に符号化できるとした。一般理論として彼が指摘した重要な点は、同じ方法をあらゆる物に適用できるという点であり、「2種類の異なる状態をそれらの物で表現できればよく、鐘、トランペット、光、松明、マスケット銃など同様の性質があればどんなものでもよい」とした。これをベーコンの暗号と呼ぶ。数学的に二進法を確立したのは17世紀のゴットフリート・ライプニッツで、"Explication de l'Arithmétique Binaire" という論文も発表している。ライプニッツは現代の二進法と同じく、1 と 0 を使って二進法を表した。ライプニッツは中国愛好家でもあり、後に「易経」を知って、その六十四卦に 000000 から 111111 を対応させ、彼の賞賛してきた中国の哲学的数学の偉大な成果の証拠だとした。1800年代中頃、イギリスの数学者ジョージ・ブールがブール代数(ブール論理)により、二進的な数の代数による命題論理の形式化を示した。1936-1937年の中嶋章と榛沢正男による「継電器回路に於ける単部分路の等価変換の理論」、1937年のクロード・シャノンによる "A Symbolic Analysis of Relay and Switching Circuits" により相次いで、リレーのようなスイッチング素子による回路(デジタル回路)の設計がブール代数によって行えることが示され、1940年代に始まり今日まで続くコンピュータの理論の基礎のひとつとなっている。2 を底とする位取り記数法を二進記数法と呼ぶ。十進法と区別するときは下付の 2 を用いて、(110) とする。二進記数法で(各位の値 "a" は 0 か 1)と表される数は二進法の定義から、という数を表している(ここで 2 は十進法の 2 である)。「二進記数法で記された数」という意味として二進数という語が使われることがある。しかし、二進数という数の体系(たとえば「整数」といったような)があるわけではない。また、p進数における "p" = 2 の場合とは全く異なる。二進法を用いれば 0 と 1 の二種類の数字のみで零を含む任意の自然数が表現可能であり、負号と合わせることで整数が表現可能である。更に小数点を合わせて 4 種類の記号のみで実数の表現が可能である。集積回路などのデジタル回路、ハードディスクなどの磁気ディスクでは、電圧の高低、磁極の N/S など、二値の物理現象を用いるため、数を二進法で表すのが最適である。コンピュータの内部で数値を表現する場合、十進法を用いると 0 から 9 の十種類の数字に対応する十種類の内部状態を区別しなければならない。これは機構を複雑にするので、現代のデジタルコンピュータは通常は二進法を採用し、0 と 1 のみによって数値を表現している。入出力で十進法を用いるときは一般に十進法と二進法とで変換を行う。二進化十進表現を用いたり、IBM の POWER のように十進法による直接演算機能を持つコンピュータもあるが、回路としては二値を用いている。多くの応用で見られるように桁数が有限の場合はより限定的には"有理数の部分集合"が表現されているわけであるが、通常は「"有限精度の実数"」が表現されていると解釈される。コンピュータ等で負の整数を扱う場合、広く一般的に用いられている方法は1番上位のビット(桁)を符号の様に扱い、すべてのビットが 1 のものを -1 とする方法である(2の補数を参照)。-2 は最下位ビットが 0 になる。8 ビットの場合(二進で 8 桁まで扱える場合)、-1 は 11111111、-2 は 11111110 と表現する。この方法は 11111110 + 1 = 11111111、11111111 + 1 = 0 となり、加減乗の演算において特別な処理が不要であるという特徴を持つ。ただし、最上位ビットで繰り上がり・繰り下がりが生じた場合に 9 ビット目より上を捨てて演算することになる。また 10000000 は -128 となるが、例えばC言語では符号付char型の数は -127 から 127 の数が扱えることが保証されるのみで、-128 が扱えることは保証されず、処理系依存となる(char型が最低限 8 ビットとして、2の補数以外の負数表現の利用も考慮した仕様)。正の整数 m を十進法から二進法に変換するのは次のようにする。余りを求めた順の逆に並べると、それが二進法に変換された結果になる。例:192を二進法に変換する。よって 192 = 11000000 である。正で 1 未満 (0 < m < 1) である数 m を十進法から二進法に変換するのは次のようにする。計算の例1: 1/3 を二進法に変換する。ここで「処理」の部分の最後「formula_3」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「01」が循環することがわかるので終了する。よって1/3=0.010101…=0.01(なお、アンダーバーの部分(01)は無限に繰り返しという意味)計算の例 2: 十進法での 0.1 を二進法に変換する。ここで「処理」の部分の最後「0.4×2 = 0.8 < 1」はそれ以前に出てきた式である。このため、これ以上続けても同じ式の繰り返しで永久に終わらないことがわかる。すなわち小数部の「0011」が循環することがわかるので終了する。よって 0.1 = 0.0001100110011… = 0.00011 である。二進命数法とは、2 を底とする命数法である。真の二進命数法では、2 に対応する数詞があり、数はそれらの和で表される。自然言語では、このような命数法はパプアニューギニアのメルパ語 (Melpa) でのみ知られている。通常、二進法の数詞を持つとされるものは二つ組で数える体系であり、乗算が含まれないため、真の二進法ではない。以下にパプアニューギニアの南キワイ語 (Southern Kiwai) およびシッサノ語 (Sissano) の数詞を示す。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。