公開

アナログとデジタルの違いは?2進数・16進数の変換を図解【情報Ⅰ】

文:野澤 嘉孝 (ソフトウェアエンジニア/プログラミングスクール Sandbox 代表)

アナログとデジタルの違いは?2進数・16進数の変換を図解【情報Ⅰ】

この記事の概要

「コンピュータは0と1しか扱えない」と聞くと、ずいぶん不器用な機械に思えませんか。 それなのに、写真を表示して、動画を再生して、好きな曲まで流してくれます。 先に結論:値の表し方と、数の書き方を分けよう アナログとデジタル:連続した量で表すか、とびとびの値で表すかの違い。

「コンピュータは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の位……」になると考えましょう。

2進数1101の各桁に8、4、2、1を対応させ、合計13を求める図

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を2で割り続け、余りを下から読んで1101に変換する図

最初に求まる余りは最下位の桁なので、余りは下から読みます。

13なら、次の4回です。

  1. 13÷2=6 余り1
  2. 6÷2=3 余り0
  3. 3÷2=1 余り1
  4. 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通りなので、ぴったり対応します。

11010110を1101と0110に分け、16進数D6に直す図

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を補えます。

2進数10110の左に0を補って0001と0110に分け、16進数16に直す図

整数の左に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もご覧ください。

参考資料

あわせて読みたい記事

Sandboxのサポート内容 Sandboxの情報Ⅰ学習サポートを見る →
共通テスト情報Ⅰのまとめ 共通テスト「情報Ⅰ」対策シリーズの一覧を見る →
野澤 嘉孝

この記事を書いた人

野澤 嘉孝

ソフトウェアエンジニア/プログラミングスクール Sandbox 代表

ソフトウェアエンジニア。同志社大学理工学部を経て、京都大学大学院で核融合発電の基礎研究(プラズマ物理)に従事。高校生向け数学塾の講師、大学での物理実験の授業を通じて延べ500名以上の学生をサポート。現在は業界特化型SaaSの開発に携わりながら、小中高生向けプログラミングスクール Sandbox を運営。

プロフィールと執筆記事の一覧 →

「情報Ⅰ、うちの子はどう対策すればいい?」

情報Ⅰ対策について無料で相談する

志望校の配点を一緒に確認したい方は → 無料の学習相談へ

入会金無料・いつでも退会OK・退会後もいつでも再入会できます