なぜコンピュータは2進数(binary)で計算するか
記事更新日:2024-01-28

n進数
nは使っている数字の数
nは使っている数字の数

2進数は2個の数字(0,1)を使う
10進数は10個の数字(0〜9)を使う

つまり、「位」(くらい)の意味
位取り記数法(くらいどりきすうほう)

たとえば、アラビア数字とローマ数字の違い
- アラビア数字は位を取る
- 「じゅうに」は「12」
- 「102」ではない
- 「じゅうに」は「12」
- ローマ数字は位を取らない
- 「じゅうに」は「ⅩⅡ」
- Ⅹ(10)と Ⅱ(2)
- 「じゅうに」は「ⅩⅡ」


「位を取らない」とは、単純に数字を並べていくだけ

位取りをしないと計算が困難なため、古代ローマでは数学が発展しなかった
古代ローマは実用主義で、数学を発展させる抽象的なアイデアがなかったと言われている
- 実用主義(Pragmatism)は、実際に役立つかどうかを基準とするアプローチ
- 実用主義者は、実際の問題解決にフォーカスする
2進法と10進法の表記の違い

2進法は桁数がとても多い


コンピュータは、桁数が多くても平気
コンピュータ内の電気の流れは、on, off の2つ(直流)
コンピュータは、電気が流れていない(0) / 流れている(1)ですべてを処理する
10進数で動くコンピュータは多数の電子部品(回路)が必要なため、開発されなくなった
n進数の英語表記

2はbinary, 10はdecimal
- unary number
- 1進数
- unary:「単項」
- binary number
- 2進数
- ラテン語の binarius(2つから成る)が語源
- decimal number
- 10進数、小数
- deci はラテン語のdecimus(1/10)が語源:deci-mal
- デシリットル は 1/10 リットル
- decimal には小数という意味もある
- hexadecimal
- 16進数

専門用語にはラテン語(=古代ローマ帝国の言葉)が多い。
昔、政治の中心が古代ローマ帝国で、学問がラテン語で発展したから。

ちなみに、「digital デジタル」はラテン語のdigitus(指)が語源
- 政治と学問の中心地だった古代ローマだが、実用主義とローマ数字により数学は発展しなかった
- アラビア数字を初めてヨーロッパに持ち込んだのは、フィボナッチ
- 彼は、もともと商人だった
- 北アフリカでアラビア数字と出会い、位取り記数法に感動した
- それ以降、数学の研究にのめり込んだ
初期のプログラミングはbinaryで記述していた

初期のざっとした年表
1940年代〜1950年代初頭
機械語(binary方式)
機械語(binary方式)
- 入力方式はパンチカード
- 1941年:ドイツで世界初のプログラム可能なコンピュータとされるZ3開発
- 1945年:アメリカで世界初の電子式コンピュータENIAC開発(高速で数値計算ができる)
1950年代初頭
アセンブリ言語(機械語よりは人間が理解しやすい)
アセンブリ言語(機械語よりは人間が理解しやすい)
- 入力方式はパンチカード
1957年
Fortran(初の高級言語)
Fortran(初の高級言語)
- IBMによって開発
- 科学技術分野で利用された
1959年
COBOL(高級言語)
COBOL(高級言語)
- 主にビジネスアプリケーション向けに設計された
1970年代〜1990年代
さまざまな言語の登場によりプログラミングが大きく普及
さまざまな言語の登場によりプログラミングが大きく普及
- オブジェクト指向言語の登場、SQLの登場など

初期は2進法のうえに、パンチカードで入力。
誰でもできるものではなかった。

機械語に翻訳するコンパイラの開発によって、今は10進法で記述できる
部品の関係で2進数を採用
現在はコンパイラが
2進数へ変換する
現在はコンパイラが
2進数へ変換する
2024-01-28
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
メモリとストレージ 【メモリとストレージ】プログラミングに必要な保存と計算の区別 -
戻り値をまとめたい コレクションで戻り値を集めるコレクティングパラメータ|Collecting Parameter -
引数をまとめたい 複数の引数をまとめて読みやすくするパラメータ•オブジェクト|Parameter Object -
Orthogonality垂直な関係性 直交性とは影響を与えない設計方法|Orthogonality -
現場で役立つ設計の原則 【プログラミング学習】現場で役立つシステム設計の原則〜変更を楽で安全にするオブジェクト指向の実践技法 -
コミュニケーションシンプル柔軟 プログラミングのストレスを軽減する3つの価値観【Imprementation Patterns】