C言語学習ポータル(無料版) 学習コンテンツ プログラムとは何か 0と1ですべてを表す——2進数の入口

📜 プログラムとは何か

0と1ですべてを表す——2進数の入口

無料公開版に収録・読む目安 12分

🎯 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が立っている桁の重みを足すだけです。慣れれば暗算できます。

ビット8・4・2・1。この4つの数を覚えるだけで、4桁の2進数はすぐ読めるようになるよ。

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という数字にまた出会います。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

2進数にしんすう

0と1だけで数を表す方法。コンピュータの回路は電気のON/OFFしか区別できないため、内部ではすべての情報がこの2進数で表現されている。たとえば10進数の5は、2進数では101と表される。

同じトラックのほかの項目

コンピュータは何をする機械かコンピュータが「超高速だが命令どおりにしか動かない機械」であることを、自分の言葉で説明できる プログラムとは「手順書」であるプログラムが満たすべき3条件(順序・明確さ・有限)を理解し、曖昧な指示との違いを説明できる ソースコードから機械語へ——コンパイルの旅ソースコード・コンパイラ・機械語の関係と、コンパイルという工程の役割を説明できる CPUとメモリの模式図CPUとメモリの役割分担を机の比喩で説明でき、メモリが「番地つきのロッカー」であることを理解する 命令実行サイクル(Fetch-Decode-Execute)CPUが命令を1つずつ取り出して実行する繰り返しで動いていることを理解する プログラミング言語の地図とCの位置低級言語・高級言語の違いを理解し、数ある言語の中でのC言語の位置づけを説明できる なぜ最初にC言語なのかAI時代にC言語を最初に学ぶ意味を、自分なりの理由として持てるようになる
‹ なぜ最初にC言語なのか

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH