2進数は、基数-2 の記数法または2進記数法で表された数です。これは、自然数を表す 2 つの記号 (通常は「0」(ゼロ) と「1」(一)) のみを使用して数を表す方法です。2進数は、2 進記数法で有限の表現を持つ有理数、つまり整数を2 の累乗で 割った商 を指す場合もあります。
2進法は、基数が2の位置表記法です。各桁はビット、または2進数と呼ばれます。論理ゲートを使用したデジタル電子回路での実装が簡単なため、2進法は、言語の単純さと物理的な実装におけるノイズ耐性により、他のさまざまな人間のコミュニケーション技術よりも好ましい使用システムとして、ほぼすべての最新のコンピューターとコンピューターベースのデバイスで使用されています。 [1]
歴史
現代の二進数システムは、16世紀から17世紀にかけてヨーロッパでトーマス・ハリオットやゴットフリート・ライプニッツによって研究されました。しかし、二進数に関連するシステムは、古代エジプト、中国、インドなど複数の文化で以前から登場していました。
エジプト
.svg/500px-Eye_of_Ra_(fractions).svg.png)
古代エジプトの書記官は、分数に2つの異なるシステム、エジプト分数(2進法とは無関係)とホルス目分数(多くの数学史家が、このシステムで使用されている記号を配置するとホルスの目を形成できると考えていることからこのように呼ばれているが、これには異論もある)を使用していた。[2]ホルス目分数は、穀物、液体、またはその他の測定単位の分数の2進数表記システムであり、ヘカットの分数は2進分数1/2、1/4、1/8、1/16、1/32、および1/64の合計として表される。このシステムの初期の形式は、紀元前2400年頃のエジプト第5王朝の文書に見られ、完全に発達した象形文字形式は、紀元前1200年頃のエジプト第19王朝にまで遡る。[3]
古代エジプトの掛け算の方法も二進数と密接な関係がある。この方法では、ある数を二番目の数で掛け算する際に、値(最初は二番目の数)を二倍にするか、最初の数を足し戻すという一連の手順を実行する。これらの手順を実行する順序は、二番目の数の二進数表現によって決まる。この方法は、例えば紀元前1650年頃のリンド数学パピルスで使用されているのが見られる。 [4]
中国

易経は中国で紀元前9世紀に遡ります。[5]易経の二進法は四進法の 占術を解釈するために使われます。[6]
それは道教の陰陽二元論に基づいています。[7] 3ビットと6ビットの2進数に類似した 8つの卦(八卦)と64の六卦(「六十四」卦)のセットは、少なくとも古代中国の周王朝の頃から使用されていました。 [5]
宋代の学者である邵雍(1011–1077)は、数学的に使用されることを意図していなかったものの、現代の2進数に似た形式で六十四卦を再配置しました。[6]邵雍の卦[8]で個々の六十四卦の最下位ビットを見て 、実線を0、破線を1として右下から左上へ、または実線を1、破線を0として左上から右下へ行に沿って読むと、六十四卦は0から63までのシーケンスとして解釈できます。 [9]
古代
エトルリア人は占いの肝臓の外側を16の部分に分け、それぞれに神の名前と天空の領域を刻んだ。肝臓の各領域は2進法の読みを生成し、それが組み合わさって占いの最終的な2進法となった。[10]
古代ギリシャのドドナ神託所での占いは、別々の壺、質問の石板、そして「はい」と「いいえ」の丸薬から抽出して行われ、その結果が組み合わされて最終的な予言が作られました。[11]
インド
インドの学者ピンガラ(紀元前2世紀頃)は韻律を記述するための2元体系を開発した。[12] [13]彼は韻律を短音節と長音節(長音節は短音節2つ分の長さに等しい)の形で記述した。[14]これらはラグ(軽い)音節とグル(重い)音節 として知られていた。
ピンガラのヒンドゥー教の古典「チャンダシャストラ」(8.23)は、各メートルに一意の値を与えるための行列の形成について説明しています。「チャンダシャストラ」はサンスクリット語で文字通りメートルの科学と翻訳されます。ピンガラのシステムにおける2進数表現は、現代の位置表記法の2進数のように左ではなく、右に向かって増加します。[15]ピンガラのシステムでは、数字は0ではなく1から始まります。4つの短い音節「0000」が最初のパターンであり、値1に対応します。数値は、位の値の合計に1を加えることで得られます。[16]
アフリカ
イファはアフリカの占いシステムです。易経に似ていますが、二進法の記号は最大256個あります[17] 。易経は64個です。イファは15世紀西アフリカのヨルバ族の間で生まれました。2008年、ユネスコはイファを「人類の口承および無形遺産の傑作」のリストに追加しました。[18] [19]
その他の文化
フランス領ポリネシアのマンガレバ島の住民は、1450年より前に2進法と10進法を組み合わせたシステムを使用していました。 [20] 2進音のスリットドラムは、アフリカとアジア全域でメッセージを暗号化するために使用されています。[7]易経 に似た2進法の組み合わせのセットは、イファなどの伝統的なアフリカの占いシステムや、中世の西洋の風水術でも使用されていました。オーストラリア先住民の言語の大部分は2進法を使用しています。[21]
ライプニッツの西洋の先駆者たち
13世紀後半、ラモン・リュイは当時の人類のあらゆる知識分野におけるすべての知恵を説明するという野心を抱いていた。その目的のために、彼はいくつかの単純な基本原理またはカテゴリの2進法の組み合わせに基づく一般的な方法、つまり「アルス・ジェネラリス」を開発し、これにより彼はコンピューティング科学と人工知能の先駆者と見なされている。[22]
1605年、フランシス・ベーコンは、アルファベットの文字を2進数のシーケンスに縮小し、任意のランダムなテキストのフォントのほとんど目に見えないバリエーションとしてエンコードできるシステムについて議論しました。[23]バイナリエンコードの一般理論にとって重要なことは、彼がこの方法はあらゆるオブジェクトに使用できると付け加えたことです。「ただし、それらのオブジェクトは2倍の違いしか持たない場合、たとえばベル、トランペット、ライトとトーチ、マスケット銃の音、および同様の性質の楽器などです。」[23] (ベーコンの暗号を参照)
1617年、ジョン・ネイピアは、文字による非位置表現を使用して2進計算を行う 位置算術と呼ばれるシステムを記述しました。トーマス・ハリオットは、 2進法を含むいくつかの位置番号システムを研究しましたが、その結果は公表しませんでした。それらは後に彼の論文の中に見つかりました。[24] ヨーロッパでこのシステムを最初に発表したのは、おそらく1700年のフアン・カラムエル・イ・ロブコヴィッツによるものでした。 [25]
ライプニッツ

ライプニッツは二進法に関する100以上の原稿を書いたが、そのほとんどは未発表のままである。[26] 1679年に最初の著作を発表する以前にも、数学とは関係のない著作の余白に走り書きされた、数表や基本的な計算など二進法の概念を探究する初期の試みが多数の原稿に残されている。[26]
ライプニッツは1679年に二進法に関する最初の著作『二進法の進行について』を発表し、10進法と二進法の変換や、二進法を使った加算、減算、乗算、除算などの基本的な算術演算を実行するアルゴリズムを紹介した。また、6桁の数字の二乗を計算し、平方根を求める二進代数も開発した。[26]
彼の最も有名な著作は、1703年に出版された論文『二進法の解説』である。ライプニッツの論文の完全なタイトルは、英語では「1と0の文字のみを使用する二進法の解説、その有用性、および古代中国の伏羲の数字に投げかける光についてのいくつかのコメント」と翻訳されている。[27]ライプニッツのシステムは、現代の二進法と同様に0と1を使用する。ライプニッツの二進法の例を次に示します。[27]
- 0 0 0 1 数値 2 0
- 0 0 1 0 数値 2 1
- 0 1 0 0 数値 2 2
- 1 0 0 0 数値 2 3
1700年にイエズス会の司祭ジョアキム・ブーヴェと文通しているとき、ライプニッツは二進法について説明し、ブーヴェは1701年の手紙の中で、易経は二進法の独立した並行発明であると論証した。ライプニッツとブーヴェは、このマッピングは彼が賞賛する哲学的数学における中国の大きな成果の証拠であると結論付けた。[28]この並行発明について、ライプニッツは「二進法算術の説明」の中で「これほど長い時間が経ってからの意味の回復は、ますます奇妙に思えるだろう」と書いている。[29]
この関係は、彼の普遍的な言語の概念、あるいは普遍特性(characteristica universalis)の中心となる考えであり、これは彼の後継者であるゴットロープ・フレーゲやジョージ・ブールなどが近代記号論理学の形成において密接に追随することになる人気の高い考えである。[30]ライプニッツは、1685年に宣教師として中国を訪れたフランスのイエズス会士ジョアキム・ブーヴェとの接触を通じて、初めて易経 に出会った。ライプニッツは、易経の六十四卦を、キリスト教徒としての自身の宗教的信念の普遍性の確証とみなした。 [31]二進数はライプニッツの神学の中心であった。彼は、二進数はキリスト教の創造(creatio ex nihilo)つまり無からの創造という考えを象徴していると信じていた。 [32]
異教徒に伝えるのが容易ではない概念は、神の全能の力による無からの創造です。ここで 1 と 0、または無というシンプルで飾り気のない表現を通して示されているように、数字の起源以上にこの力を示し、実証できるものはこの世に存在しないと言えるでしょう。
— ライプニッツがブラウンシュヴァイク公に宛てた手紙に易経の六十四卦を添えたもの[31]
その後の展開

1854年、イギリスの数学者ジョージ・ブールは、ブール代数として知られる代数的論理体系を詳述した画期的な論文を発表しました。彼の論理計算は、デジタル電子回路の設計に役立つことになりました。[33]
1937年、クロード・シャノンはMITで、歴史上初めて電子リレーとスイッチを使用してブール代数と2進演算を実装した修士論文を発表しました。 「リレーとスイッチング回路の記号分析」と題されたシャノンの論文は、実用的なデジタル回路設計の基礎となりました。[34]
1937年11月、当時ベル研究所で働いていたジョージ・スティビッツは、リレーベースのコンピュータを完成させ、2進加算を使って計算を行った。彼はこれを「モデルK」(彼が組み立てた「キッチン」にちなんで)と名付けた。 [35]ベル研究所は1938年後半、スティビッツを指揮官とする完全な研究プログラムを承認した。1940年1月8日に完成した複素数コンピュータは複素数を計算できた。 1940年9月11日にダートマス大学で開催されたアメリカ数学会の会議で、スティビッツはテレタイプを使って電話回線経由で複素数計算機に遠隔コマンドを送信することができた。これは電話回線経由で遠隔使用された最初の計算機だった。このデモンストレーションを目撃した会議参加者には、ジョン・フォン・ノイマン、ジョン・モークリー、ノーバート・ウィーナーがおり、ウィーナーは回想録にこのことについて書いている。[36] [37] [38]
1935年から1938年にかけてコンラート・ツーゼによって設計・構築されたZ1コンピュータは、ブール論理と2進浮動小数点数を使用していました。[39]
表現
任意の数字はビットのシーケンス(2 進数) で表すことができます。このシーケンスは、相互に排他的な 2 つの状態をとることができる任意のメカニズムで表すことができます。次の記号の行はいずれも、2 進数値 667 として解釈できます。

それぞれの場合で表わされる数値は、各記号に割り当てられた値によって異なります。コンピューターの初期の時代には、スイッチ、パンチ穴、パンチ紙テープがバイナリ値を表すために使用されていました。[40]現代のコンピューターでは、数値は2つの異なる電圧で表されます。磁気 ディスクでは、磁気極性が使用される場合があります。「正」、「はい」、「オン」の状態は、必ずしも数値と同じではありません。これは、使用されているアーキテクチャによって異なります。
アラビア数字を使用した数字の慣習的な表現に従って、2 進数は一般に0と1 の記号を使用して表記されます。2 進数を書くときは、基数または基数を示すために下付き文字、接頭辞、または接尾辞が付けられることがよくあります。次の表記法は同等です。
- 100101 バイナリ (フォーマットの明示的記述)
- 100101b(バイナリ形式を示す接尾辞。インテル規約とも呼ばれる[41] [42])
- 100101B (バイナリ形式を示すサフィックス)
- bin 100101 (バイナリ形式を示すプレフィックス)
- 100101 2 (2進数表記を示す下付き文字)
- %100101(バイナリ形式を示す接頭辞。モトローラ規約[41] [42]としても知られる)
- 0b100101 (プログラミング言語でよく使われるバイナリ形式を示す接頭辞)
- 6b100101 (プログラミング言語でよく使われる、バイナリ形式のビット数を示す接頭辞)
- #b100101 (Lisp プログラミング言語でよく使われるバイナリ形式を示す接頭辞)
2 進数の数字は、通常、10 進数の数字と区別するために、 1桁ずつ読み上げられます。たとえば、2 進数の 100 は、2 進数の性質を明確にし、正確さを保つために、100ではなく、100 と発音されます。2 進数の 100 は 4 という値を表すため、この数字を100 (まったく異なる値または量を表す単語)と呼ぶと混乱を招きます。あるいは、2 進数の 100 を「4」(正しい値)と読み上げることもできますが、これでは 2 進数の性質が明確にはなりません。
2進数で数える
2 進法でのカウントは、他の数値システムでのカウントと似ています。1 つの数字から始めて、各記号を昇順でカウントします。2 進法のカウントを検討する前に、参照枠として、 より一般的な10 進法のカウント システムについて簡単に説明しておくと役に立ちます。
小数点数
10 進数では、 0から9までの10 個の記号を使用します。カウントは、最下位桁 (右端の桁) の増分置換から始まります。この桁は、しばしば第 1 桁と呼ばれます。この位置の使用可能な記号がなくなると、最下位桁は0にリセットされ、次に重要な桁 (1 つ左の桁) が増分され (オーバーフロー)、下位桁の増分置換が再開されます。このリセットとオーバーフローの方法は、重要な桁ごとに繰り返されます。カウントは次のように進行します。
- 000、001、002、... 007、008、009、(右端の桁はゼロにリセットされ、その左の桁が増分されます)
- 0 1 0、011、012、…
- ...
- 090、091、092、... 097、098、099、(右端の2桁がゼロにリセットされ、次の桁が増分されます)
- 1 00、101、102、…
二進法カウント

バイナリ カウントもまったく同じ手順に従い、増分置換は最下位のバイナリ桁、つまりビット(右端のビット、最初のビットとも呼ばれる) から始まりますが、使用できる記号は0と1 の2 つだけです。したがって、バイナリでビットが 1 に達した後、増分によってビットは 0 にリセットされますが、左の次のビットも増分されます。
- 0000,
- 000 1、(右端のビットが最初から始まり、次のビットが増分されます)
- 00 1 0、0011、(右端の2ビットが最初から始まり、次のビットが増分されます)
- 0 1 00、0101、0110、0111、(右端の3ビットが最初から始まり、次のビットが増分されます)
- 1 000、1001、1010、1011、1100、1101、1110、1111 ...
2進数システムでは、各ビットは 2 の累乗を表します。右端のビットは 2 0を表し、次のビットは 2 1、その次は 2 2というように表します。2 進数の値は、各「1」ビットで表される 2 の累乗の合計です。たとえば、2 進数 100101 は、次のように 10 進数形式に変換されます。
- 100101 2 = [ ( 1 ) × 2 5 ] + [ ( 0 ) × 2 4 ] + [ ( 0 ) × 2 3 ] + [ ( 1 ) × 2 2 ] + [ ( 0 ) × 2 1 ] + [ ( 1 )× 20 ]
- 100101 2 = [ 1 × 32 ] + [ 0 × 16 ] + [ 0 × 8 ] + [ 1 × 4 ] + [ 0 × 2 ] + [ 1 × 1 ]
- 100101 2 = 37 10
分数
2 進法の分数は、分母が2 の累乗の場合にのみ終了します。その結果、 1/10 には有限の 2 進表現がありません ( 10には2と5という素因数があります)。このため、2進浮動小数点演算では 10 × 1/10 は正確に 1 にはなりません。たとえば、 1/3 = .010101... の 2 進表現を解釈すると、次のようになります。 1/3 = 0 × 2 −1 + 1 × 2 −2 + 0 × 2 −3 + 1 × 2 −4 + ... = 0.3125 + ... 有限個の 2 の逆累乗の合計で正確な値を見つけることはできず、1/3 の 2 進法表現では 0 と 1 が永遠に交互に現れます。
2進数演算
2 進数の算術は、他の位置記数法の 数値システムでの算術とよく似ています。2 進数の数値では、加算、減算、乗算、除算を実行できます。
追加

2 進数で最も簡単な算術演算は加算です。2 つの 1 桁の 2 進数を加算するのは、繰り上がりの形式を使用すると比較的簡単です。
- 0 + 0 → 0
- 0 + 1 → 1
- 1 + 0 → 1
- 1 + 1 → 0、繰り上がり1(1 + 1 = 2 = 0 + (1 × 2 1 ) なので)
2 つの「1」の数字を加算すると「0」の数字が生成されますが、次の列に 1 を追加する必要があります。これは、10 進数で特定の 1 桁の数字を加算したときに発生するものと似ています。結果が基数 (10) の値と等しいかそれを超える場合、左側の数字が増加します。
- 5 + 5 → 0、繰り上がり1(5 + 5 = 10 = 0 + (1 × 10 1 ) なので)
- 7 + 9 → 6、繰り上がり 1 (7 + 9 = 16 = 6 + (1 × 10 1 ) なので)
これは繰り上がりと呼ばれます。加算の結果が桁の値を超える場合、その超過分を基数で割った値 (つまり、10/10) を左に「繰り上がり」、次の位置の値に加算します。次の位置の重みは基数に等しい係数だけ大きいため、これは正しい動作です。繰り上がりは 2 進数でも同じように機能します。
1 1 1 1 1 (繰り上がり数字)
0 1 1 0 1
+ 1 0 1 1 1
-------------
= 1 0 0 1 0 0 = 36
この例では、2 つの数字 01101 2 (13 10 ) と 10111 2 (23 10 )が加算されます。上の行は、使用される繰り上がりビットを示しています。右端の列から始めて、 1 + 1 = 10 2です。1 は左に繰り上がり、0 は右端の列の一番下に書き込まれます。右から 2 番目の列を加算します。再び 1 + 0 + 1 = 10 2で、1 が繰り上がり、0 が一番下に書き込まれます。3 番目の列: 1 + 1 + 1 = 11 2。今回は 1 が繰り上がり、一番下の行に 1 が書き込まれます。このように進めると、最終的な答えは 100100 2 (36 10 ) になります。
コンピュータが 2 つの数値を加算する必要がある場合、任意の 2 ビット x と y に対して x xor y = (x + y) mod 2という規則により、非常に高速な計算も可能になります。
ロングキャリー法
多くの 2 進加算問題を簡略化する方法に、「ロング キャリー法」または「ブルックハウス 2 進加算法」があります。この方法は、数字の 1 つに 1 が長く連続して含まれている場合に特に便利です。この方法は、2 進法では、n個の 1 ( nは任意の整数長) だけで構成される数字の連続が与えられた場合、1 を加算すると、数字 1 の後にn個の 0 の文字列が続くという単純な前提に基づいています。この概念は、10 進法の場合と同じように論理的に成り立ちます。10 進法では、 n個の 9 の文字列に 1 を加算すると、数字 1 の後にn 個の0 の文字列が続きます。
2進数 10進数
1 1 1 1 1 同様に 9 9 9 9 9
+ 1 + 1
——————————— ———————————
1 0 0 0 0 0 1 0 0 0 0 0
このような長い文字列は、2 進数システムではごく一般的です。このことから、大きな 2 進数は、過度の繰り上がり演算を行わずに、2 つの簡単な手順で加算できることがわかります。次の例では、2 つの数字 1 1 1 0 1 1 1 1 0 2 (958 10 ) と 1 0 1 0 1 1 0 0 1 1 2 (691 10 ) が加算されています。左側では従来の繰り上がり方式、右側では長い繰り上がり方式が使用されています。
伝統的な持ち運び方法 ロング持ち運び方法
対
1 1 1 1 1 1 1 1 (繰り上がり) 1 ← 1 ← 1 を、下の「文字列」の1桁目まで繰り上げる
1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 「文字列」を消します。
+ 1 0 1 0 1 1 0 0 1 1 + 1 0 1 0 1 1 0 0 1 1 追加された数字を消します
——————————————————————— —————————————————————
= 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1
一番上の行は、使用された桁上げビットを示しています。1 つの列から次の列への標準的な桁上げの代わりに、対応する桁の値に「1」がある最下位の「1」を追加し、その「1」をシリーズの末尾の 1 桁後に桁上げすることができます。「使用された」数字は、すでに追加されているため、取り消す必要があります。他の長い文字列も同様に、同じ手法を使用して取り消すことができます。次に、残りの数字を通常どおりに合計します。この方法で進めると、最終的な答えは 1 1 0 0 1 1 1 0 0 0 1 2 (1649 10 ) になります。小さな数字を使用したこの単純な例では、従来の桁上げ方法では 8 回の桁上げ操作が必要でしたが、長い桁上げ方法では 2 回しか必要ありませんでした。これは、労力が大幅に削減されたことを示しています。
足し算表
2 進加算表は、論理和演算の真理値表に似ていますが、同じではありません。違いは、 であるのに対し、 であるということです。
減算
減算もほぼ同じように機能します。
- 0 − 0 → 0
- 0 − 1 → 1、1を借りる
- 1 − 0 → 1
- 1 − 1 → 0
「0」の数字から「1」の数字を引くと、「1」の数字が生成されますが、次の列から 1 を引く必要があります。これは、借用と呼ばれます。原理は繰り上がりと同じです。減算の結果が 0 (数字の最小値) 未満の場合、手順は、基数で割った不足分 (つまり、10/10) を左から「借用」し、次の位置の値から引きます。
* * * * (星印の列は以下より借用) 1 1 0 1 1 1 0 − 1 0 1 1 1 ---------------- = 1 0 1 0 1 1 1
* (星印の列は以下より借用) 1 0 1 1 1 1 1 – 1 0 1 0 1 1 ---------------- = 0 1 1 0 1 0 0
正の数を減算することは、絶対値が等しい負の数を加算することと同じです。コンピュータは負の数を処理するために符号付きの数値表現を使用します。最も一般的なのは2 の補数表記です。このような表現により、別の「減算」演算が不要になります。2 の補数表記を使用すると、減算は次の式で要約できます。
- A − B = A + ではなく B + 1
乗算
2 進数の乗算は、10 進数の乗算と似ています。2 つの数AとB は部分積で乗算できます。B の各桁について、Aのその桁の積が計算され、新しい行に書き込まれます。その行は、その右端の桁が使用されたBの桁と揃うように左にシフトされます。これらの部分積をすべて合計すると、最終結果になります。
2 進数には 2 つの桁しかないため、各部分乗算の結果は 2 つしかありません。
- Bの数字が0の場合、部分積も0になります。
- Bの数字が1の場合、部分積はAに等しい。
たとえば、2 進数 1011 と 1010 は次のように乗算されます。
1 0 1 1 (あ)
× 1 0 1 0 ( )
---------0 0 0 0 ← B
の右端の「ゼロ」に対応+ 1 0 1 1 ← B
の次の「1」に対応
+ 0 0 0 0
+ 1 0 1 1
---------------
= 1 1 0 1 1 1 0
2進数は、 2進小数点の後のビットで乗算することもできます。
1 0 1 . 1 0 1 A(10進数では5.625)
× 1 1 0 . 0 1 B(10進数では6.25)
-------------------1 . 0 1 1 0 1 ← B
の「1」に相当+ 0 0 . 0 0 0 0 ← B
の「0」に相当
+ 0 0 0 . 0 0 0
+ 1 0 1 1 . 0 1
+ 1 0 1 1 0 . 1
---------------------------
= 1 0 0 0 1 1 . 0 0 1 0 1 (10進数では35.15625)
ブースの乗算アルゴリズムも参照してください。
九九表
2進数の乗算表は、論理積演算の真理値表と同じです。
分割
2 進数の長除算も、10 進数の長除算と同様です。
以下の例では、除数は 101 2、つまり 10 進数の 5 ですが、被除数は 11011 2 、つまり 10 進数の 27 です。手順は 10 進数の長除算と同じです。ここでは、除数 101 2 が被除数の最初の 3 桁 110 2に 1 回入るので、一番上の行に「1」が書き込まれます。この結果に除数を掛け、被除数の最初の 3 桁から減算します。次の桁 (「1」) が追加され、新しい 3 桁のシーケンスが得られます。
1
___________
1 0 1 ) 1 1 0 1 1
− 1 0 1
-----
0 0 1
この手順は新しいシーケンスで繰り返され、被除数の桁がなくなるまで続けられます。
1 0 1
___________
1 0 1 ) 1 1 0 1 1
− 1 0 1
-----
1 1 1
− 1 0 1
-----
0 1 0
したがって、11011 2を 101 2で割った商は、上の行に示されているように101 2であり、下の行に示されている余りは 10 2です。10 進数では、これは 27 を 5 で割ると 5 になり、余りが 2 になるという事実に対応します。
長除算の他に、各反復で部分剰余から過剰減算できるように手順を考案することもできます。これにより、体系的ではないものの、結果としてより柔軟な代替方法が得られます。
平方根
2 進数の平方根を 1 桁ずつ計算するプロセスは、10 進数の平方根の場合と同じであり、ここで説明されています。例を以下に示します。
1 0 0 1
---------
√ 1010001
1
---------
101 01
0
--------
1001 100
0
--------
10001 10001
10001
-------
0
ビット演算
2 進数シンボルの数値的解釈とは直接関係ありませんが、ビットのシーケンスはブール論理演算子を使用して操作できます。2 進数シンボルの文字列をこのように操作することをビット単位の演算と呼びます。論理演算子AND、OR、およびXOR は、入力として提供された 2 つの 2 進数の対応するビットに対して実行できます。論理NOT演算は、入力として提供された 1 つの 2 進数の個々のビットに対して実行できます。このような演算は、算術的なショートカットとして使用される場合があり、他の計算上の利点もあります。たとえば、 2 進数の算術左シフトは、2 の (正の整数) 累乗による乗算に相当します。
他の数値システムとの変換
10進数から2進数へ

10進整数を2進数(2進数)に変換するには、その数を2で割ります。余りが最下位ビットになります。商を再び2で割り、その余りが次の最下位ビットになります。このプロセスは商が1になるまで繰り返されます。余りのシーケンス(最終的な商の1を含む)が2進値を形成します。2で割った場合、各余りは0または1である必要があります。たとえば、(357)10は(101100101) 2と表現されます。[43]
2進数から10進数へ
2 進数から 10 進数への変換は、前述のアルゴリズムを単純に反転するだけです。2 進数のビットは、最上位 (左端) ビットから 1 つずつ使用されます。値 0 から始まり、前の値が 2 倍になり、次のビットが追加されて次の値が生成されます。これは、複数列の表にまとめることができます。たとえば、10010101101 2 を10 進数に 変換するには、次のようにします。
結果は 1197 10です。最初の Prior Value 0 は、単に最初の 10 進数値です。この方法は、 Horner スキームの応用です。
数値の小数部も同様の方法で変換されます。この場合も、シフトと 2 倍または半分の変換の等価性が基準となります。
0.11010110101 2のような分数の 2 進数では、最初の桁は、2 番目の桁は などになります。したがって、小数点以下の最初の桁に 1 がある場合、その数は少なくとも であり、その逆も同様です。その数を 2 倍すると、少なくとも 1 になります。これは、変換する数を繰り返し 2 倍にして、結果が少なくとも 1 かどうかを記録し、整数部分を破棄するというアルゴリズムを示唆しています。
たとえば、を 2 進数で表すと次のようになります。
したがって、循環小数 0. 3 ... は循環二進分数 0. 01 ... と同等です。
たとえば、 0.1 10を 2 進数で表すと次のようになります。
これも循環二進分数 0.0 0011 ... です。 終端小数が二進法で循環展開を持つことができるというのは意外かもしれません。 多くの人が 1/10 + ... + 1/10 (10 個の数値の加算) が二進浮動小数点演算で 1 と異なることに驚くのはこのためです。 実際、終端展開を持つ唯一の二進分数は、整数を 2 の累乗で割った形式ですが、1/10 はそうではありません。
最終的な変換は、2 進分数から 10 進分数への変換です。唯一の難しさは循環分数の場合ですが、それ以外の場合は、分数を整数にシフトし、上記のように変換してから、10 進数の適切な 2 の累乗で割ります。例:
2 進数から 10 進数に変換する別の方法は、間接的に変換する方法です。16進数に慣れている人にとっては、より速い場合が多いです。まず、 ( 2 進数 ) を( 16 進数 )に変換し、次に ( 16 進数 ) を ( 10 進数 ) に変換します。
非常に大きな数の場合、これらの単純な方法は非効率的です。なぜなら、1 つのオペランドが非常に大きい場合に、多数の乗算または除算を実行するからです。単純な分割統治アルゴリズムは、漸近的にはより効果的です。2 進数が与えられた場合、それを 10 kで割ります。ここで、 k は商がほぼ余りと等しくなるように選択します。次に、これらの各部分を 10 進数に変換し、2 つを連結します。10 進数が与えられた場合、それをほぼ同じサイズの 2 つの部分に分割し、それぞれを 2 進数に変換してから、最初の変換された部分に 10 kを掛けて、2 番目の変換された部分に追加します。ここで、k は、変換前の 2 番目の最下位部分の 10 進数の桁数です。
16進数
2進数と 16 進数の相互変換はより簡単に行えます。これは、16 進数の基数(16) が 2 進数の基数 (2) の累乗であるためです。より具体的には、16 = 2 4であるため、隣の表に示すように、16 進数の 1 桁を表すには 2 進数の 4 桁が必要です。
16 進数を 2 進数に変換するには、対応する 2 進数字を置き換えるだけです。
- 3A 16 = 0011 1010 2
- E7 16 = 1110 0111 2
2 進数を 16 進数に変換するには、4 ビットのグループに分割します。ビット数が 4 の倍数でない場合は、左側に0ビットを追加します (パディングと呼ばれます)。例:
- 1010010 2 = 0101 0010 パディング付きでグループ化 = 52 16
- 11011101 2 = 1101 1101 グループ化 = DD 16
16 進数を 10 進数に変換するには、各 16 進数の 10 進数に、対応する 16 の累乗を掛けて、結果の値を加算します。
- C0E7 16 = (12 × 16 3 ) + (0 × 16 2 ) + (14 × 16 1 ) + (7 × 16 0 ) = (12 × 4096) + (0 × 256) + (14 × 16) + ( 7 × 1) = 49,383 10
八進数
2 進数も8進数に簡単に変換できます。8 進数は 8 を基数としており、これは2 の累乗です(つまり、2 3なので、8 進数を表すには 3 つの 2 進数が必要です)。8 進数と 2 進数の対応は、上記の表の16 進数の最初の 8 桁と同じです。2 進数の 000 は 8 進数の 0 に相当し、2 進数の 111 は 8 進数の 7 に相当します。
8 進数から 2 進数への変換は、 16 進数の場合と同じ方法で行われます。
- 65 8 = 110 101 2
- 17 8 = 001 111 2
2進数から8進数へ:
- 101100 2 = 101 100 2グループ化 = 54 8
- 10011 2 = 010 011 2パディング付きでグループ化 = 23 8
8進数から10進数へ:
- 65 8 = (6 × 8 1 ) + (5 × 8 0 ) = (6 × 8) + (5 × 1) = 53 10
- 127 8 = (1 × 8 2 ) + (2 × 8 1 ) + (7 × 8 0 ) = (1 × 64) + (2 × 8) + (7 × 1) = 87 10
実数の表現
非整数は負の累乗を使って表すことができます。負の累乗は基数点( 10 進法では小数点と呼ばれます)によって他の数字から区切られます。たとえば、2 進数 11.01 2は次の意味を持ちます。
合計は3.25小数点になります。
すべての二項有理数は 二進数で終了する。つまり、二進数表現では基数点の後に有限個の項がある。他の有理数も二進数で表現されるが、終了する代わりに、有限の数字列が無限に繰り返される。例えば、
任意の有理数の 2 進表現が有限または循環的であるという現象は、他の基数ベースの数値システムでも発生します。たとえば、10 進数の説明を参照してください。もう 1 つの類似点は、任意の有限表現に対して代替表現が存在することです。これは、0.111111...が等比級数2 −1 + 2 −2 + 2 −3 + ...の合計が1 であるという事実に依存しています。
無限数も反復数もない二進数は無理数を表す。例えば、
- 0.10100100010000100000100...にはパターンがありますが、固定長の繰り返しパターンではないため、無理数です。
- 1.0110101000001001111001100110011111110... は、もう 1 つの無理数である2 の平方根の2 進表現です。識別可能なパターンはありません。
参照
- アスキー
- バランスのとれた三元
- ビット演算
- バイナリコード
- 2進化10進数
- フィンガーバイナリ
- グレイコード
- IEEE754 規格
- 線形フィードバックシフトレジスタ
- オフセットバイナリ
- キバイナリー
- 被加数の削減
- 冗長バイナリ表現
- 循環小数
- 2の補数
- ユニコード
参考文献
- ^ 「3.3. バイナリとその利点 — CS160 リーダー」。computerscience.chemeketa.edu 。2024年5 月 22 日閲覧。
- ^ ロブソン、エレノア、ステダル、ジャクリーン編 (2009)、「神話 No. 2: ホルスの目分数」、オックスフォード数学史ハンドブック、オックスフォード大学出版局、p. 790、ISBN 9780199213122
- ^ クリスオマリス、スティーブン(2010)、数値表記法:比較史、ケンブリッジ大学出版局、pp. 42-43、ISBN 9780521878180。
- ^ ラドマン、ピーター・ストロム(2007年)、数学の誕生:最初の5万年、プロメテウス・ブックス、pp. 135-136、ISBN 9781615921768。
- ^ ab エドワード・ハッカー、スティーブ・ムーア、ロレイン・パトスコ (2002)。『易経:注釈付き書誌』。ラウトレッジ。p. 13。ISBN 978-0-415-93969-0。
- ^ ab レドモンド、ジェフリー; ホン、ツェーキ (2014)。易経の教え。オックスフォード大学出版局。p. 227。ISBN 978-0-19-976681-9。
- ^ ジョナサン・シェクトマン (2003)。18世紀の画期的な科学的実験、発明、発見。グリーンウッド出版。29ページ。ISBN 978-0-313-32015-6。
- ^ マーシャル、スティーブ。「易経の六十四卦の順序:少勇卦(伏羲の順序)」。2022年9月15日閲覧。
伏羲の二進法の順序は、六十四卦を二進数として表すより理にかなった方法であると言えるでしょう...文王の順序を通知する推論は、もしあるとしても不明です。
- ^ 中連、史;李文照。ポーザー、ハンス (2000)。ライプニッツの二進法と邵勇の「仙天図」:Das Neueste über China: GW Leibnizens Novissima Sinica von 1697: Internationales Symposium、ベルリン 4. ビス 7. 1997 年 10 月。シュトゥットガルト: Franz Steiner Verlag。 165–170ページ。ISBN 3515074481。
- ^ コリンズ、デレク(2008年)。「内臓のマッピング:ギリシャの肝臓鏡検査の実践」アメリカ文献学ジャーナル。129 (3):319–345。ISSN 0002-9475。JSTOR 27566714 。
- ^ ジョンストン、サラ・アイルズ(2008年)。古代ギリシャの占い。ブラックウェル古代宗教(第1版)。マサチューセッツ州マールデン:ワイリー・ブラックウェル。ISBN 978-1-4051-1573-5。
- ^ サンチェス、フリオ; カントン、マリア P. (2007)。マイクロコントローラプログラミング:マイクロチップ PIC。フロリダ州ボカラトン:CRC プレス。p. 37。ISBN 978-0-8493-7189-9。
- ^ WS Anglin と J. Lambek、The Heritage of Thales、Springer、1995 年、ISBN 0-387-94544-X
- ^ 詩人とドラマーのための数学 2012年6月16日アーカイブ、Wayback Machine (pdf, 145KB)
- ^ スタホフ、アレクセイ、オルセン、スコット・アンソニー (2009)。調和の数学:ユークリッドから現代数学とコンピュータサイエンスまで。ワールドサイエンティフィック。ISBN 978-981-277-582-5。
- ^ B. ヴァン・ヌーテン、「インド古代の二進数」、インド研究ジャーナル、第 21 巻、1993 年、31 ~ 50 ページ
- ^ ランドリー、ティモシー・R. (2019)。『ヴードゥーン:秘密と神の力の探求』現代民族誌(第1版)。フィラデルフィア:ペンシルバニア大学出版局。25ページ。ISBN 978-0-8122-5074-9。
- ^ ランドリー2019、154頁。
- ^ 「Ifa Divination System」 。 2017年7月5日閲覧。
- ^ Bender, Andrea; Beller, Sieghard (2013年12月16日). 「マンガレヴァンの2進数ステップの発明により計算が容易になった」. Proceedings of the National Academy of Sciences . 111 (4): 1322–1327. doi : 10.1073/pnas.1309160110 . PMC 3910603 . PMID 24344278.
- ^ Bowern, Claire; Zentz, Jason (2012). 「オーストラリア言語の数詞体系の多様性」人類言語学. 54 (2): 133–160. ISSN 0003-5483. JSTOR 23621076.
- ^ (Bonner 2007 [1] Archived 3 April 2014 at the Wayback Machine、Fidora et al. 2011 [2] Archived 8 April 2019 at the Wayback Machineを参照)
- ^ ab ベーコン、フランシス(1605)。「学問の進歩」。ロンドン。pp. 第 1 章。
- ^ シャーリー、ジョンW. (1951)。「ライプニッツ以前の二進法」。アメリカ物理学会誌。19 (8): 452–454。Bibcode :1951AmJPh..19..452S。doi :10.1119/1.1933042。
- ^ イネイチェン、R. (2008)。 「ライプニッツ、カラムエル、ハリオットとデュアルシステム」(PDF)。Mittailungen der deutschen Mathematiker-Vereinigung (ドイツ語)。16 (1): 12-15。土井:10.1515/dmvm-2008-0009。S2CID 179000299。
- ^ abc ストリックランド、ロイド(2020)、スリラマン、バラス(編)、"ライプニッツの数体系"、数学実践の歴史と哲学のハンドブック、チャム:シュプリンガーインターナショナルパブリッシング、pp. 1–31、doi:10.1007 / 978-3-030-19071-2_90-1、ISBN 978-3-030-19071-2、 2024年8月20日閲覧
- ^ ab Leibniz G.、Expplication de l'Arithmétique Binaire、Die Mathematische Schriften、編。 C. ゲルハルト、ベルリン、1879 年、第 7 巻、223 ページ。英語。翻訳[3]
- ^ 「ブーヴェとライプニッツ:学術書簡」、スヴィデルスキ 1980
- ^ ライプニッツ:「中国人は、おそらく千年以上前に伏羲のコヴァや線の意味を失い、彼らがどんなに遠い意味を求めていたか分からない主題について注釈を書いたため、真の説明は今やヨーロッパ人から来なければならない。経緯は次の通りである。北京に住む有名なフランス人イエズス会士、ブーヴェ神父に、0と1で数える私の方法を送ったのは、ほんの2年ほど前のことだったが、彼がこれが伏羲の数字の鍵であると認識するのにそれ以上何も必要なかった。1701年11月14日に私に手紙を書いた彼は、この哲学的王子の壮大な数字を送ってくれた。それは64まで続き、私たちの解釈の真実性を疑う余地はもうなく、この神父は私が伝えたものの助けを借りて伏羲の謎を解いたと言える。そして、これらの数字はおそらく[GM VII、 p227] 世界に存在する科学について言えば、長い年月を経てその意味が回復されたことは、なおさら興味深いことと思われる。」
- ^ エリック・J・アイトン (1985)。ライプニッツ: 伝記。テイラーとフランシス。 245–8ページ。ISBN 0-85274-470-6。
- ^ ab JEH Smith (2008). ライプニッツ: どのような合理主義者か?: どのような合理主義者か? Springer. p. 415. ISBN 978-1-4020-8668-7。
- ^ ユエンティン・ライ (1998)。ライプニッツ、神秘主義と宗教。シュプリンガー。pp. 149–150。ISBN 978-0-7923-5223-5。
- ^ ブール、ジョージ (2009) [1854]。論理と確率の数学的理論の基礎となる思考法則の調査 (マクミラン、ドーバー出版、訂正版 [1958] 再版)。ニューヨーク: ケンブリッジ大学出版局。ISBN 978-1-108-00153-3。
- ^ シャノン、クロード・エルウッド (1940)。リレーおよびスイッチング回路の記号解析(論文)。ケンブリッジ:マサチューセッツ工科大学。hdl : 1721.1/11173。
- ^ 「全米発明家の殿堂 – ジョージ・R・スティビッツ」 2008年8月20日。2010年7月9日時点のオリジナルよりアーカイブ。2010年7月5日閲覧。
- ^ 「George Stibitz : Bio」。デニソン大学数学・コンピュータサイエンス学部。2004年4月30日。 2010年7月5日閲覧。
- ^ 「パイオニア – 変化をもたらした人々とアイデア – ジョージ・スティビッツ (1904–1995)」。ケリー・レッドショー。2006年2月20日。 2010年7月5日閲覧。
- ^ 「George Robert Stibitz – Obituary」。カリフォルニアコンピュータ歴史協会。1995年2月6日。 2010年7月5日閲覧。
- ^ Rojas, Raúl (1997年4月~6月). 「Konrad Zuseの遺産: Z1とZ3のアーキテクチャ」(PDF) . IEEE Annals of the History of Computing . 19 (2): 5–16. doi :10.1109/85.586067. 2022年7月3日時点のオリジナルよりアーカイブ(PDF) . 2022年7月3日閲覧。(12ページ)
- ^ 「バイナリの紹介 – 改訂版 1 – GCSE コンピュータサイエンス」BBC . 2019 年6 月 26 日閲覧。
- ^ ab キュヴェラー、ゲルト;シュウォッホ、ディートリッヒ (2013) [1996]。 Arbeitsbuch Informatik – eine praxisorientierte Einführung in die Datenverarbeitung mit Projektaufgabe (ドイツ語)。 Vieweg-Verlag、再版: Springer-Verlag。土井:10.1007/978-3-322-92907-5。ISBN 978-3-528-04952-2. 9783322929075.
- ^ ab キュヴェラー、ゲルト;シュヴォッホ、ディートリッヒ (2007 年 10 月 4 日)。 Informatik für Ingenieure und Naturwissenschaftler: PC および Mikrocomputertechnik、Rechnernetze (ドイツ語)。 Vol. 2(第5版)。表示例、再版: Springer-Verlag。ISBN 978-3834891914. 9783834891914.
- ^ “Base System”. 2017年10月23日時点のオリジナルよりアーカイブ。2016年8月31日閲覧。
外部リンク
- バイナリーシステム(カット・ザ・ノット)
- カット・ザ・ノットでの分数の変換
- フランシス・ベーコン卿のバイリテラル暗号システム(Wayback Machineに 2016 年 9 月 23 日にアーカイブ)は、2 進数システムより古いものです。
