「コンピュータは0と1しか扱えない」と聞くと、ずいぶん不器用な機械に思えませんか。
それなのに、写真を表示して、動画を再生して、好きな曲まで流してくれます。
先に結論:値の表し方と、数の書き方を分けよう
- アナログとデジタル:連続した量で表すか、とびとびの値で表すかの違い。
- 2進数:0と1で数を書く方法。10進数に直すときは、1がある桁の重みを足す。
- 16進数:0〜9とA〜Fで数を書く方法。2進数4桁を16進数1桁にまとめられる。
大切なのは、書き方が変わっても、表している値は同じということです。たとえば、10進数の13、2進数の1101、16進数のDは同じ値です。
今回はユウキの「音量がちょうどよくならない事件」から、デジタルな値を0と1で表す仕組みと、数の変換をつなげて考えます。
イヤホンの音量に「ちょうどいい」がない夜
夜11時。ユウキはイヤホンの音量を1つ下げました。小さすぎる。1つ上げると、今度はうるさい。
ユウキ「ちょうどいいの、この間なんだけど……」
机には、祖母から譲り受けた古いラジオ。つまみを回すと、音量がなめらかに変わります。
Sandy「その『間があるかどうか』が、今日の入り口や」
これは台本に登場する対比です。実際の製品の音量調整は設計によって異なりますが、「連続した量」と「段階に分かれた値」の違いを考える手掛かりになります。
アナログとデジタルの違いは「連続か、とびとびか」
なめらかな坂には、途中のあらゆる高さがあります。一方、階段で足を置く高さは、段ごとに決まっています。

アナログは連続した量、デジタルはとびとびの値で表します。
方式 | 値の表し方 | 例 |
|---|---|---|
アナログ | 連続した量で表す | 液柱の高さで温度を示す温度計 |
デジタル | とびとびの値で表す | 0.1℃刻みの数値で示す温度計 |
「古い道具がアナログ、新しい機械がデジタル」とは限りません。そろばんは昔からありますが、数の表現はデジタルです。玉を途中まで動かしても「0.37個の玉」とは数えず、決められた玉の状態で数を表すからです。
ユウキ「じゃあ、木でできていてもデジタル?」
Sandy「材質で決まるんやったら、木のパソコン作った瞬間に大混乱やで」
また、表示の見た目と、内部の処理方式は分けて考えましょう。 針の時計でも、内部にはデジタル回路を使うものがあります。針が1秒ずつ動くことだけで、時計全体の方式を断定するのも避けたいところです。
デジタル化すると何が便利になる?
数値や記号の列にそろえると、コンピュータで計算・加工・保存・伝送しやすくなります。写真も音楽も文字も、同じ機器で扱えるのはこのためです。
データを正しく読み書きできれば、同じビット列を複製できます。ただし、保存媒体の故障や伝送エラーがなくなるわけではありません。画像を保存し直すたびに非可逆圧縮をかければ、画質が変わることもあります。
さらに、連続した量を有限の段階に当てはめると、その細かさに応じた誤差が生じ得ます。たとえば36.24℃を0.1℃刻みで表すなら、36.2℃などの段階に丸めます。このような処理を量子化といい、元の値との差を量子化誤差といいます。「デジタルだから元の情報を完全に再現できる」とは限らないのです。
なぜコンピュータは0と1を使うのか
一般的なコンピュータのデジタル回路は、電圧の低い範囲と高い範囲など、区別しやすい2つの状態を0と1に対応させます。
10段階の状態を細かく区別するよりも、2つの状態に分ける方が、多少の揺れがあっても判定の余裕を取りやすくなります。ただし、大きなノイズや故障で誤る可能性はあります。
Sandy「0と1は、機械にとって区別しやすい約束なんや。数字が少なくても、桁を増やしたらええねん」
ここまでの「デジタル」は、とびとびの値で表すという意味です。そろばんの例のように、デジタルが必ず0と1というわけではありません。
一般的なコンピュータでは、そのデジタルな値を0と1の並びで表します。 そこで必要になるのが、次の2進法です。
2進数の読み方:右から1・2・4・8の重みを足す
2進法は、0と1を使い、2になると次の桁へ繰り上がる数の表し方です。 2進表記の1桁分に相当する情報の単位を、ビットといいます。
10進法が0〜9を使って「9の次は10」と進むのに対し、2進法は「0、1、10、11、100……」と進みます。2進数の「10」は、10進数では2です。
各桁の重みは、整数部分の右端から1、2、4、8、16……。左へ進むたびに2倍になります。10進法の「一の位・十の位・百の位」が、2進法では「1の位・2の位・4の位……」になると考えましょう。

1がある桁の重みだけを足すと、10進数の値になります。
たとえば、2進数の1101を10進数にすると、次のようになります。
桁の重み | 8 | 4 | 2 | 1 |
|---|---|---|---|---|
1101の各桁 | 1 | 1 | 0 | 1 |
足す値 | 8 | 4 | 0 | 1 |
8+4+0+1=13。したがって、(1101)₂=(13)₁₀です。右下の小さな数字は、何進法の表記かを示しています。
ユウキ「1101って、千百一じゃないんだ」
Sandy「そこが位取りの約束や。同じ並びでも、何進法かで値が変わるで」
4ビットなら、各桁が0か1なので、2×2×2×2=16通り。符号のない整数として表すなら0000〜1111、つまり0〜15です。0も1通りに数えるため、16通りの最大値は15になります。
10進数から2進数へ:2で割った余りを下から読む
10進数の正の整数を2進数に直すには、2で割り続け、余りを下から読みます。

最初に求まる余りは最下位の桁なので、余りは下から読みます。
13なら、次の4回です。
- 13÷2=6 余り1
- 6÷2=3 余り0
- 3÷2=1 余り1
- 1÷2=0 余り1
商が0になったら終了。余りを下から読むと1101です。上から読むと1011になり、別の数になってしまいます。
変換したら、8+4+1=13と重みを足して検算しましょう。
なぜ下から読むのでしょうか。最初の余りが、いちばん右の「1の位」を決めるからです。割り算を繰り返すたびに、2の位、4の位、8の位が順に分かります。計算した順は下位の桁からなので、書くときは逆順になります。
なお、0を2進数で表すと0です。ここで扱っている手順は整数の変換で、小数の変換には別の手順を使います。
16進数への変換は、2進数を4桁ずつ区切る
0と1だけの長い列は、人間には読みづらいものです。そこで便利なのが16進法です。
16進法では、0〜9とA〜Fの16種類を使います。 Aは10、Bは11、Cは12、Dは13、Eは14、Fは15。Fの次で桁が上がり、10になります。この「10」は10進数では16です。
4ビットで表せる組合せは16通り。16進数1桁も16通りなので、ぴったり対応します。

4ビットと16進数1桁は、どちらも16通りで対応します。
10進 | 2進4桁 | 16進 | 10進 | 2進4桁 | 16進 |
|---|---|---|---|---|---|
0 | 0000 | 0 | 8 | 1000 | 8 |
1 | 0001 | 1 | 9 | 1001 | 9 |
2 | 0010 | 2 | 10 | 1010 | A |
3 | 0011 | 3 | 11 | 1011 | B |
4 | 0100 | 4 | 12 | 1100 | C |
5 | 0101 | 5 | 13 | 1101 | D |
6 | 0110 | 6 | 14 | 1110 | E |
7 | 0111 | 7 | 15 | 1111 | F |
たとえば11010110なら、右から4桁ずつ区切って1101と0110にします。1101は13なのでD、0110は6。元の順に並べれば、(11010110)₂=(D6)₁₆です。
Sandy「4桁ずつ束ねて、服を着替える感じや」
ユウキ「数そのものが小さくなるわけじゃないんだ」
Sandy「せや。短くなったんは表記で、値は同じやで」
16進表記は、ビット列を人間が読み書きする際に役立ちます。回路がアルファベットのDそのものを扱う、という意味ではありません。
4桁に足りないときは、左に0を補う
整数は右から4桁ずつ区切り、いちばん左の組が4桁に足りなければ、左に0を補えます。

整数の左に0を補っても値は変わりません。
2進数10110なら「1|0110」なので「0001|0110」にして、16進数では16です。
(10110)₂=(16)₁₆=(22)₁₀
ここに出てくる「16」は、10進数の十六ではありません。16進数の「1×16+6=22」です。右に0を足すと、0でない整数では値が2倍になるので注意しましょう。
逆に16進数から2進数へ戻すときは、1桁ずつ4ビットに展開します。たとえばA3は「1010|0011」。途中の桁の0を落とすと対応が崩れるため、まず各桁を4ビットでそろえると安全です。
変換方法をまとめて確認
変換 | 基本の手順 | 例 |
|---|---|---|
2進→10進 | 1がある桁の重みを足す | (1101)₂=8+4+1=(13)₁₀ |
10進→2進 | 2で割り続け、余りを逆順に読む | (13)₁₀=(1101)₂ |
2進→16進 | 整数は右から4桁ずつ区切り、各組を変換する | (1101 0110)₂=(D6)₁₆ |
16進→2進 | 1桁ずつ4ビットに展開する | (A3)₁₆=(1010 0011)₂ |
16進→10進 | 整数部分は右から1、16、256……の重みを掛けて足す | (D6)₁₆=13×16+6=(214)₁₀ |
表の空白は、4ビットの区切りを見やすくするためのものです。ここでは符号のない整数の表記を扱っています。
練習:変換の手順を自分で確かめよう
以下はこの記事のオリジナル学習例です。実際の共通テスト問題ではありません。
問1:2進数10110を10進数で表してください。
答えは22です。重みは左から16、8、4、2、1。1のある桁を足すと16+4+2=22になります。
問2:10進数19を2進数で表してください。
答えは10011です。2で割った余りは順に1、1、0、0、1。下から読みます。16+2+1=19と検算できます。
問3:2進数10110101を16進数で表してください。
答えはB5です。「1011|0101」に分け、11→B、5→5と変換します。5Bにすると順序が逆。右から区切りますが、答えは元の並び順のままです。
0と1でも曲を鳴らせる理由と、今日の要点
音のような連続した変化も、一定の時点の値を調べ、決めた細かさの数値にし、0と1の列で記録できます。再生時には、そのデータをもとに電気信号を作り、スピーカーなどで音に戻します。詳しい音のデジタル化は、この先の学習テーマです。
ユウキ「0と1だけで足りるように、表し方を決めたんだ」
Sandy「ええやん。『0と1しかない』から『0と1で表せる』に見方が変わったな」
覚えたいのは、次の3点です。
- アナログとデジタルは、連続した量か、とびとびの値かで考える。
- 2進数は1のある桁の重みを足す。10進整数から直すときは、2で割った余りを下から読む。
- 2進数と16進数は4桁と1桁が対応する。整数は右から区切り、元の順に並べる。
次はビットとバイト、データ量の単位へ進むと、ファイルサイズの見方にもつながります。数の表現を実際の制作でも使ってみたい人は、プログラミングスクールSandboxもご覧ください。
参考資料
- 東京大学 はいぱーワークブック「bit列と2進数」:位取り、基数変換、2進数と16進数の対応の確認。
- 大阪大学「情報のデジタル化とは」:連続した情報を数値として扱う仕組みの確認。
- 文部科学省「情報Ⅰ」情報のデジタル化、数値のデジタル化:アナログ・デジタル、進数の相互変換の学習範囲の確認。