📜 プログラムとは何か
🎯 2進数の仕組みを理解し、簡単な2進数と10進数の相互変換ができる
コンピュータは0と1しか扱えない、とよく言われます。なぜでしょうか。理由は身も蓋もありません。電気が流れているか、いないかの2状態しか、確実に見分けられないからです。
電圧が高い状態を1、低い状態を0とする。この2種類の記号だけで、数も文字も画像も音も表す。それがコンピュータの大前提です。この0か1かの1桁をビットと呼び、8ビットをまとめて1バイトと呼びます。
2しかない世界の数え方
私たちは10種類の数字(0〜9)を使うので、9の次で桁が上がって10になります。これが10進数です。コンピュータは2種類しか使えないので、1の次で桁が上がります。これが2進数です。
10進数の 0 1 2 3 4 5 6 7 8 は、2進数では順に 0 1 10 11 100 101 110 111 1000 となります。2進数の 10 は「イチ・ゼロ」と読みます。桁が上がるタイミングが違うだけで、考え方は10進数とまったく同じです。
2進数を10進数に直す
10進数の 345 が「100が3個、10が4個、1が5個」であるように、2進数も桁ごとの重みで考えます。2進数の重みは右から 1, 2, 4, 8, 16, 32, 64, 128 と倍々になります。
例えば 1011 なら、重みは左から 8, 4, 2, 1 なので
8×1 + 4×0 + 2×1 + 1×1 = 8 + 2 + 1 = 11
1が立っている桁の重みを足すだけです。慣れれば暗算できます。
10進数を2進数に直す
逆向きは「大きい重みから引けるか試す」のが簡単です。13を2進数にしてみます。
答えは 1101 です。
足し算も同じようにできる
2進数でも筆算ができます。違いは 1 + 1 が2にならず、桁が上がって 10 になる点だけです。101 + 11 を計算してみましょう。右の桁から 1+1 で0を書いて1くり上がり、次の桁は 0+1+1 でまた0を書いて1くり上がり、最後は 1+1 で 10。答えは 1000、10進数の8です(5+3=8なので合っています)。CPUの中で毎秒何十億回も行われている足し算も、原理はこの筆算とまったく同じです。
数以外もすべて数字になる
文字も同じ仕組みで扱います。例えば A という文字には65という番号が割り当てられており、メモリの中では 01000001 として置かれています。色は赤・緑・青の強さを0〜255の数で、音は空気の振動の高さを数の列で表します。世界のすべてを数に置き換えるのがデジタルという考え方です。
1バイト(8ビット)で表せるのは 2の8乗=256通り。ここから「なぜ0〜255なのか」「なぜ数がある大きさを超えると壊れるのか」という話につながっていきます。第1部の型やオーバーフローの回で、この256という数字にまた出会います。
0と1だけで数を表す方法。コンピュータの回路は電気のON/OFFしか区別できないため、内部ではすべての情報がこの2進数で表現されている。たとえば10進数の5は、2進数では101と表される。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。