人間は数値を扱う場合に、指の数と同じ十進法を使っています。
コンピュータは内部で二進法を使い、全てを二進数で表現します。
彼らは指がありません、代わりに電子を使って数を数えます。
最初に/ n 進数 と n 進法
n 進数は 0 〜 n 迄の数字を符号として扱う数字表記のことです。
n 進法は桁(ケタ/digit/単位の切り替わり)の上がる数を示しています。
例えば時計は 12 進法、時・分・秒は 60 進法。※ ただし符号については 0 〜 11 ではなく、慣例に従い時計は 1 〜 12 、時・分・秒は 1 〜 60 が符号として利用されます。
十進法を考えた場合、十は桁が上がる数を指す。符号は 0 〜 9 迄の十種類の数字を利用します。書きだしてみると
0, 1, 2, 3, 4, 5, 6, 7, 8, 9; 10,11,12,13,14,15,16,17,18,19;
こうすれば分かると思いますが、確かに10で桁が上がってます。上記は十進法の十進数。じゃあ二進法で二進数はどうなる?
[column width=”48%” spacing=”4%”]
0, 1; 2, 3; 4, 5; 6, 7; 8, 9; 10,11;
[/column][end-columns]
これは二進数を知らない人に試したら出てきた間違った回答例。でも面白かったので載せます。十進数を使って改行しただけでは二進数とはなりません。
まず一番肝心な 2 で桁が上がってません。そして二進数は 0 と 1 だけで表現されます。
[column width=”48%” spacing=”4%”]正解
0, 1; 10, 11; 100, 101; 110, 111; 1000, 1001; 1010, 1011;
[/column][column width=”48%”]不正解
0, 1; 2, 3; 4, 5; 6, 7; 8, 9; 10,11;
[/column]
[end-columns]
二進法は必ず 2 の累乗で桁が上がる、そして符号は 0 と 1 (二つの符号)だけで表現するという縛り。
つまり二進数では 2 == 10 となります。
参考 (YoYoGames):An introduction to Binary
引用ココから
000 = 0
001 = 1
010 = 2
100 = 4In binary land, 10 really does equal 2!
引用ココまで
しかしここで素朴な疑問、なぜわざわざ二進数でやる?
人間様が十進数で普段扱っている数値をこんなふざけたもの(二進数)で全部表現できるの?
まだコンピュータ未満だった初期の電子計算機時代には、実際に十進数を採用した計算機もありました。
参考 (Hatena::ブログ):なぜコンピューターは2進法で、人間はそうでないのか
参考(塾講師ステーション情報局):小学生にn進法を分かりやすく説明しよう!