銀河鉄道

なぜコンピュータは2進数(binary)で計算するか

サムネイル
コンピュータ2進数
n進数
nは使っている数字の数

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

つまり、「位」(くらい)の意味

位取り記数法(くらいどりきすうほう)

たとえば、アラビア数字とローマ数字の違い

  1. アラビア数字は位を取る
    • 「じゅうに」は「12
      • 「102」ではない
  2. ローマ数字は位を取らない
    • 「じゅうに」は「ⅩⅡ
      • Ⅹ(10)と Ⅱ(2)
https://www.benricho.org/moji_conv/11.html

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

位取りをしないと計算が困難なため、古代ローマでは数学が発展しなかった

古代ローマは実用主義で、数学を発展させる抽象的なアイデアがなかったと言われている

  • 実用主義(Pragmatism)は、実際に役立つかどうかを基準とするアプローチ
    • 実用主義者は、実際の問題解決にフォーカスする

2進法と10進法の表記の違い

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

プログラマの数学

コンピュータは、桁数が多くても平気

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

n進数の英語表記

2はbinary, 10はdecimal

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

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

ちなみに、「digital デジタル」はラテン語のdigitus(指)が語源

  • 政治と学問の中心地だった古代ローマだが、実用主義とローマ数字により数学は発展しなかった
  • アラビア数字を初めてヨーロッパに持ち込んだのは、フィボナッチ
    • 彼は、もともと商人だった
    • 北アフリカでアラビア数字と出会い、位取り記数法に感動した
    • それ以降、数学の研究にのめり込んだ

初期のプログラミングはbinaryで記述していた

初期のざっとした年表

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

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

機械語に翻訳するコンパイラの開発によって、今は10進法で記述できる

部品の関係で2進数を採用
現在はコンパイラが
2進数へ変換する

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧