こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第40講「2進数・10進数・16進数の変換」のWeb版です。共通テスト「情報Ⅰ」での重要度はS(毎年出る。落とすと致命的)、情報Ⅱでの接続先は(3)情報とデータサイエンスです。
基数変換は「2で割った余りを下から並べる」と手順だけ覚えて済ませてしまう人が本当に多い分野です。しかしその暗記では、問題文で独自の規則を定義してくる共通テスト型の出題に太刀打ちできません。この講ではなぜその手順になるのかを位取り記数法の定義から導き、さらにその理解が情報Ⅱの機械学習にそのまま使われることまでお見せします。
1. この講の問い
なぜコンピュータは2進数で動くのに、人間は16進数を使って書くのか。
2. 結論
位取り記数法とは「桁の位置に基数のべき乗という重みを割り当てる約束」であり、基数が何であっても構造は同じです。2進法が使われるのは素子が安定して区別できる状態が2つだからで、16進法が併用されるのは 16 = 24 ゆえに2進4桁がちょうど16進1桁に一対一で対応するからです。だから2進 ⇄ 16進は計算不要の「4桁ずつ区切るだけ」、10進が絡むときだけ「重みの和」か「割り算の繰り返し」が要ります。
3. なぜそうなるのか
3-1. 位取り記数法の定義から始める
私たちが「206」と書くとき、頭の中では次の式を書いています。
206 = 2 × 102 + 0 × 101 + 6 × 100
ここで本質なのは「2」「0」「6」という数字そのものではなく、桁の位置が重みを持っていることです。右端を0番目と数えて左からk番目の桁には 10k という重みがついています。
この「10」を別の数 r に取り替えても、話は何も変わりません。基数 r の位取り記数法とは、N = anrn + … + a1r1 + a0r0(各 a は 0 以上 r−1 以下)という約束のことです。a がその桁の数字、rk がその桁の重み。この1本の式が第40講のすべてで、以下に出てくる手順はすべてここから導かれます。10進法が特別なのではありません。人間の指が10本だったという歴史的偶然にすぎないのです。
3-2. なぜコンピュータは2進法なのか
理由は「2進法が数学的に優れているから」ではありません。物理的に作れるからです。
コンピュータの中身は膨大な数のスイッチ(トランジスタ)です。スイッチに要求されるのは「今どちらの状態か」を、電圧の揺らぎ・温度変化・製造ばらつきがあっても間違えずに読み取れること。状態が2つ(電圧が低い/高い)なら、境目に十分な余裕を取れます。多少ノイズが乗っても「低い」は「低い」のままです。
これを10状態にしたらどうなるでしょうか。1本の線に0〜9の10段階の電圧を載せることになり、隣の段階との差が10分の1になります。少しのノイズで隣の値に化ける。信頼性が壊滅します。
つまり2進法は「数の表し方として選ばれた」のではなく、信頼できる素子が2状態しか作れなかったので、そこから逆算して数の表し方が決まったのです。順序が逆であることを、私は授業でしつこく言います。ここを取り違えると「なぜ2進法なんですか」という問いに永久に答えられません。
ちなみに学習指導要領(平成30年告示)解説 情報編を読むと、この「二進法による表現」は情報Ⅰの(3)「コンピュータとプログラミング」ではなく、意外にも(2)「コミュニケーションと情報デザイン」の解説に置かれています。
その際,情報のデジタル化に関して標本化,量子化,符号化,二進法による表現などを理解するようにする
文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月(該当箇所は解説p.28相当)
つまり国の設計上、基数は「計算機の話」ではなく「アナログをデジタルに変える話の一部」なのです。基数変換の問題が標本化・量子化・データ量の計算とセットで出るのは偶然ではありません。「データ」と「情報」はどう違うのかもあわせて読むと、この配置の意図が見えてきます。
3-3. なぜ16進法を併用するのか
2進法は機械にとって都合がよいのですが、人間にとっては最悪です。1バイト(8ビット)を書くだけで 11001110 と8文字要ります。4バイトのアドレスなら32文字。読めませんし、書き写すときに必ず間違えます。
そこで「2進数を短く書き換える速記法」が要ります。条件はただ一つ、基数が2のべき乗であること。
なぜでしょうか。基数 r = 2m のとき rk = (2m)k = 2mk ですから、r進法の第k桁の重みは、2進法の第mk桁の重みとぴったり一致します。r進1桁が2進m桁の塊を、他の桁に一切干渉せずに丸ごと担当できるのです。だから桁ごとに独立に、繰り上がりを考えずに、機械的に置き換えられます。
16 = 24 なので m = 4。16進1桁 = 2進4桁。8ビット=2桁、16ビット=4桁、32ビット=8桁と、バイト境界がきれいに割り切れます。
8 = 23 の8進法も同じ理屈で使えますし、実際UNIXのパーミッション(chmod 755)で今も生きています。ただ8進1桁=3ビットは8ビットを割り切りません。バイト単位で世界が動いている今、16進のほうが圧倒的に便利なのでこちらが主流になりました。
一方で10進法は 10 = 2 × 5 で2のべき乗ではありません。だから2進 ⇄ 10進には桁ごとの対応が存在せず、必ず「全体としての計算」が要る。ここが第40講のいちばん大事な分岐です。
| 変換 | 必要な作業 | 理由 |
|---|---|---|
| 2進 ⇄ 16進 | 4桁ずつ区切って置換するだけ | 16 = 24 で桁が対応する |
| 2進 ⇄ 8進 | 3桁ずつ区切って置換するだけ | 8 = 23 で桁が対応する |
| 2進・16進 → 10進 | 重み × 数字の和を計算 | 定義式に代入するだけ |
| 10進 → 2進・16進 | 基数で割った余りを繰り返し拾う | 除法の一意性から導かれる |
3-4. なぜ「割り算の繰り返し」で下の桁から出てくるのか
10進 → 2進の手順として「2で割った余りを下から並べる」と暗記させられた人は多いと思います。しかしこれは覚えるものではなく、定義式から3行で出てきます。
求めたい2進表現を N = an2n + … + a121 + a020 とおいて、両辺を2で割ってみます。a0 以外の項はすべて2の因数を持っているので、
N = 2 × ( an2n−1 + … + a1 ) + a0
と書けます。a0 は0か1、つまり2より小さい。したがってこの式は「Nを2で割った商と余り」そのものであり、余りが a0、商が残りの部分になります。そして商は「元の数を1桁右にずらしたもの」ですから、これに同じ操作をすれば次は a1 が余りとして出てきます。以下同様。
つまり「2で割った余りを繰り返し拾う」のは、除法の一意性(割り算の商と余りはただ一通り)を使って、最下位桁から順に確定させている操作なのです。だから答えは下から書く。上から書けないのは、上の桁が何桁になるかを先に知る方法がないからです。
基数rが何であっても同じ議論が通ります。10進 → 16進なら16で割った余りを拾えばよい。 手順を3種類覚える必要はありません。原理は1つです。
4. 手で確かめる
4-1. 2進 → 10進(定義式に代入するだけ)
1100 1110 を10進にします。重みを上に書き、1が立っている桁だけ足します。
| 重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| 数字 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
128 + 64 + 8 + 4 + 2 = 206
0の桁は書かない。 8ビットなら重みは右から 1, 2, 4, 8, 16, 32, 64, 128 の8個しかないので、これは丸暗記して構いません(この講で暗記に価値があるのはここだけです。試験中の時間が変わります)。
4-2. 10進 → 2進(余りを下から)
206を2で割り続けます。
| 計算 | 商 | 余り |
|---|---|---|
| 206 ÷ 2 | 103 | 0 |
| 103 ÷ 2 | 51 | 1 |
| 51 ÷ 2 | 25 | 1 |
| 25 ÷ 2 | 12 | 1 |
| 12 ÷ 2 | 6 | 0 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 |
余りを下から読んで 1100 1110。4-1と一致しました。
4-3. 2進 ⇄ 16進(4桁ずつ区切るだけ・計算しない)
1100 1110 を右から4桁ずつ区切ります。1100 は12でC、1110 は14でE。よってCE。逆も同じで、CEのCを1100、Eを1110に開いて連結すれば 1100 1110 に戻ります。筆算は一切しません。
| 16進 | 2進 | 10進 | 16進 | 2進 | 10進 |
|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 |
| 1 | 0001 | 1 | 9 | 1001 | 9 |
| 2 | 0010 | 2 | A | 1010 | 10 |
| 3 | 0011 | 3 | B | 1011 | 11 |
| 4 | 0100 | 4 | C | 1100 | 12 |
| 5 | 0101 | 5 | D | 1101 | 13 |
| 6 | 0110 | 6 | E | 1110 | 14 |
| 7 | 0111 | 7 | F | 1111 | 15 |
左端の区切りが4桁に満たないときは0で埋めます。 例えば 101 1010(7桁)は右から4桁ずつ区切ると 101 と 1010 になるので、左を 0101 と0で埋めて5A。左に0を足しても値は変わりません(重み × 0 = 0)が、右に0を足したら別の数になります。だから区切りは必ず右から。ここは毎年間違える人が出ます。
4-4. Pythonで答え合わせをする
以下は私の手元(Python 3)で実際に実行し、出力を確認したものです。
print(bin(206)) # 0b11001110
print(hex(206)) # 0xce
print(int('11001110', 2)) # 206
print(int('CE', 16)) # 206
print(format(206, '08b')) # 11001110
print(format(206, '02X')) # CE
注意すべきは bin() と hex() がそれぞれ接頭辞 0b と 0x を付けて返し、しかもhex()は小文字(0xce)で返すことです。桁を揃えたい・大文字にしたいなら format() を使います。試験には出ませんが、実際に手を動かすと必ずぶつかります。
次に「割り算の繰り返し」を自分で書いて、bin() と一致するか確かめてみてください。
n = 206
keta = []
while n > 0:
keta.append(n % 2) # 余りが下の桁から出る
n //= 2 # 商に置き換える(1桁右にずらす)
print(keta)
# [0, 1, 1, 1, 0, 0, 1, 1]
print(''.join(str(b) for b in reversed(keta)))
# 11001110
keta の中身が [0, 1, 1, 1, 0, 0, 1, 1] と逆順で入っていること、これを reversed() でひっくり返して初めて 11001110 になることを、目で確認してください。3-4で示した「下の桁から確定する」が、そのままコードの形で見えています。
4-5. 色を使って16進の実用を確かめる
#2E8B57 という色コードを分解してみます。
r, g, b = 0x2E, 0x8B, 0x57
print(r, g, b)
# 46 139 87
print('#{:02X}{:02X}{:02X}'.format(r, g, b))
# #2E8B57
print(bin(r), bin(g), bin(b))
# 0b101110 0b10001011 0b1010111
16進2桁が1バイト(8ビット、0〜255)にちょうど対応するので、#RRGGBB の6桁はR・G・B各8ビット、合計24ビットです。これがフルカラーが 224 = 16,777,216 色になる理由であり、色コードが16進で書かれる理由でもあります。10進で書いたら桁数が揃わず、区切りが目で見て分かりません。
文部科学省の「情報Ⅰ」教員研修用教材でも、第2章の演習1で文字色を #000000 から #FF0000 / #00FF00 / #0000FF に変えて違いを確かめさせています。国の教材の段階で、16進RGBは「触って確かめるもの」として扱われているわけです。文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第2章 コミュニケーションと情報デザイン(令和2年)
4-6. データ量の見積りに直結する
同じ教員研修用教材は「解像度が1920 × 1080の24ビットフルカラー画像のデータ量は何MBになるか」という演習を置いています。やってみましょう。
1920 × 1080 × 24 ビット = 49,766,400 ビット = 6,220,800 バイト
1MBを 106 バイトと数えれば約6.22MB、1MiBを 220 バイトと数えれば約5.93MiBになります。同じデータ量なのに数字が違う。 これは単位の定義の違いであって、どちらかが間違いなのではありません。共通テストでは問題文にどちらの定義を使うかが書かれるので、そこを読み落とさないこと。
24ビットという数字が「R・G・B各8ビット」から来ていること、8ビットが「16進2桁」であること、この3つが同じ1本の線でつながっているのが見えれば、この講は理解できています。
5. 共通テストではこう出る(重要度S)
基数の扱いは、共通テストで毎年何らかの形で顔を出します。単独の変換問題として出ることもあれば、データ量計算・文字コード・論理回路・色の表現の中に部品として埋め込まれることもあります。
2026年1月実施の共通テスト「情報Ⅰ」では、第1問(小問集合)の問2が「図案の表現を題材に、2進数と16進数との変換について問う問題」であったと分析されています。第1問のマーク数は前年の11から15に増えました(配点20点は変わらず)。同じ配点の中でマーク数が増えた=1問あたりの処理を速く終わらせる必要が上がったということです。基数変換で手が止まると、後ろの大問に響きます。出題傾向の分析は東進「共通テスト2026 情報Ⅰ 全体概観・設問別分析」(2026年1月)による。当塾では共通テストの問題文・選択肢・図表は転載していません。
出題の4つの型
「1011 0110 を16進法で表すといくらか」型。4桁ずつ区切るだけ。ここは10秒で終わらせます。
問題文で独自の記法や図案の対応規則を定義し、それに従って2進 ⇄ 16進を行わせる型。2026年度の問2はこれです。難しいのは変換ではなく、規則を正確に読み取ること。 変換自体を機械化しておかないと、規則の読解に頭を使う余裕が残りません。
「1画素あたり◯ビット、◯×◯画素の画像のデータ量は」型。2のべき乗と桁数の関係が分かっていれば単なる計算です。「何色表現できるか」と「何ビット必要か」が逆向きの問いであることに注意してください。
文字コード、IPアドレス、MACアドレス、論理演算、パリティビット。ここでは基数変換そのものは問われていませんが、できないと問題文が読めません。
落とし穴
- 区切りは必ず右から。 左から4桁ずつ区切ると全滅します。
- 0埋めは左だけ。 左の0は値を変えませんが、右の0は桁を上げてしまいます。
- A〜Fを10〜15と即答する。 特にBは11、Dは13。2進では B = 1011、D = 1101 と紛らわしいので、対応表を書けるようにしておきます。
- 接頭辞・下付き記法に振り回されない。 0x1F、1F(16)、(1F)16 はすべて同じものです。問題文の書き方に合わせます。
- 「◯進法」と「◯進数」を混同しない。 記数法の方式が「◯進法」、その方式で書かれた数が「◯進数」。共通テストの本文表記は「◯進法」が基本です。
- 10進が絡む変換だけ計算が要る。 2進 ⇄ 16進で筆算を始めていたら、時間を捨てています。
練習用の自作問題(本記事オリジナル)
(1)1010 0111 を10進法と16進法で表せ。
(2)3F(16) を2進法と10進法で表せ。
(3)10進法の500を16進法で表せ。
(4)1画素あたり16ビットで色を表すとき、表現できる色数はいくつか。
(5)110 1101(7桁)を16進法で表せ。
(1)167、A7 (2)0011 1111、63 (3)1F4(500 ÷ 16 = 31 余り4、31 ÷ 16 = 1 余り15=F、1 ÷ 16 = 0 余り1、下から読んで 1・F・4) (4)216 = 65,536色 (5)右から4桁ずつ区切ると 110 と 1101 なので、左を0埋めして 0110 1101 → 6D
共通テスト情報Ⅰの学習計画全体については共通テスト「情報Ⅰ」対策はいつから何をやるべきか、実際に得点を伸ばした事例は36点から本番92点へ伸ばした指導実例にまとめてあります。
6. 情報Ⅱではこうなる
情報Ⅰで基数は「表現の方式」として学びます。情報Ⅱでは、同じ8ビットの値がデータ分析の対象そのものになります。ここが決定的な違いです。
6-1. 色は「数値」から「空間の中の点」になる
学習指導要領解説 情報編の情報Ⅱ(3)「情報とデータサイエンス」の解説には、こういう学習活動の例が挙げられています。
例えば,分類の例としてカラー画像のデータについて特定の5色に減色する場合,どのような考え方で近い色を選択すればよいかを表現し,任意の色がどの色に近いかを判断するプログラムを作成し,実際に5色に減色した画像を作成する
文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月(該当箇所は解説p.51相当)
情報Ⅰでは #2E8B57 は「R=46, G=139, B=87 という色コード」で終わります。情報Ⅱでは、これが (46, 139, 87) という3次元空間の座標になります。そして「色が近い」は「その空間での距離が小さい」に置き換わり、5色への減色はクラスタリングの問題になる。情報Ⅰの「224色」は、情報Ⅱでは「2563個の点が詰まった立方体」です。同じ事実を、違う言葉で扱います。
6-2. 階調(0〜255)が「次元」になる
文部科学省の「情報Ⅱ」教員研修用教材 第3章(後半)の学習16「クラスタリングによる分類」は、手書き数字画像のデータセットを題材にしています。そこにこう書かれています。
ここでの近傍を求める距離は,784次元(147ページ参照)のユークリッド距離を計算しているが,距離が何であるかを生徒に理解させるには,階調(0〜255)ではなく,0と1で2値化されたデータと考えると分かりやすくなる
文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第3章 情報とデータサイエンス 後半(令和2年6月、該当箇所はp.149相当)
784は 28 × 28 です。1枚の画像の1画素が、784次元ベクトルの1成分になっている。そして各成分の値が0〜255、つまり8ビットで表せる範囲です。
私がこの記述で唸ったのは後半です。国の教材が「分かりにくければ0と1に戻して考えろ」と書いている。 これはまさに情報Ⅰで習う2値表現です。機械学習という一番遠そうな話題の入口で、結局2進数に戻ってくる。基数の理解は情報Ⅰで捨てる知識ではなく、情報Ⅱの土台としてそのまま使われます。
6-3. 情報Ⅰと情報Ⅱの扱いの違い
| 情報Ⅰ | 情報Ⅱ | |
|---|---|---|
| 色 | R・G・B各8ビット、16進6桁で書く | 3次元空間の点。距離を測りクラスタに分ける |
| 画素値 0〜255 | 階調。データ量計算の材料 | 特徴ベクトルの1成分。784次元の1つ |
| ビット列 | 情報を符号化した結果 | 2値化した特徴量。距離計算を簡単にする道具 |
| 目的 | 「どう表すか」を理解する | 「その表現を使って何を判断するか」を作る |
情報Ⅰが「表現」で終わり、情報Ⅱは「表現を入力として意思決定する」ところまで行く。 本書全体を通じて繰り返し現れる構図ですが、基数の講はその最初の実例です。
6-4. その先(大学・資格試験)
基数変換は高校で終わる話でもありません。情報処理推進機構(IPA)の基本情報技術者試験シラバス Ver.9.2 では、大分類1「基礎理論」の「1. 離散数学」の冒頭がそのまま基数です。
(1)基数 2進数,8進数,10進数,16進数,n進数の表現,2進数と10進数などの基数の変換手法を理解する。
(2)数値の表現 負の数の表現(補数表現),小数の表現を理解する。
情報処理推進機構「基本情報技術者試験(レベル2)シラバス Ver.9.2」
並び順に注目してください。基数 → 負の数(補数)→ 小数(浮動小数点)。これは本書の第40講 → 第41講 → 第42講とまったく同じ順序です。偶然ではなく、この順でしか積み上がらないからです。
そして学習指導要領解説の情報Ⅰ(3)側には、こう書かれています。
コンピュータでは定められたビット数のデータが扱われ,表現できる値の範囲や精度が有限であることで,計算結果は原理的に誤差を含む可能性がある
前掲「解説 情報編」(該当箇所は解説p.32相当)
「定められたビット数」は有限である。 その有限さが、次の講で扱う負の数の表し方(2の補数)と、その次の講で扱う誤差(浮動小数点)を生みます。第40講は、その2つの前提を用意する講なのです。
まとめ
- 位取り記数法は「桁の位置に基数のべき乗という重みを割り当てる約束」。基数が変わっても構造は同じ。
- 2進法は素子が2状態しか安定して作れないという物理的制約から決まった。数学的な優劣の話ではない。
- 16進法を使うのは 16 = 24 だから。2進4桁が16進1桁に一対一で対応するので、計算せず置き換えられる。
- 10進が絡むときだけ計算が要る。10 = 2 × 5 で2のべき乗ではないから。
- 「2で割った余りを下から」は暗記事項ではなく、除法の一意性から導かれる。
- 情報Ⅱでは、8ビットの画素値が784次元ベクトルの成分になり、色は空間の点になってクラスタリングの対象になる。
出典(すべて2026年8月3日に取得)
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第2章 コミュニケーションと情報デザイン(令和2年)
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第3章 情報とデータサイエンス 後半(令和2年6月)
- 情報処理推進機構(IPA)「基本情報技術者試験(レベル2)シラバス Ver.9.2」
- 東進「共通テスト2026 情報Ⅰ 全体概観・設問別分析」(二次情報。設問構造の説明にのみ使用)
なお、情報Ⅰがそもそもなぜ必修科目になったのかという背景は情報Ⅰはなぜ必修になったのかに書きました。制度の話は2026年8月時点の情報です。
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第40講のWeb版です。
「情報Ⅰ、独学でいけるのか不安」という方へ
数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
追補:いちばん出る「型2」の自作演習4問
5章で、出題の4つの型のうち型2(規則を読ませてから変換させる)について、「難しいのは変換ではなく、規則を正確に読み取ること」と書きました。ところが、その下の練習問題5問はすべて型1(素朴な変換)と型3(データ量)で、型2が1問もありません。落とし穴も6つ挙げましたが、練習で実際に踏むのは「右から区切る」「0埋めは左だけ」の2つだけです。
そこで、型2の形だけを4問そろえました。どの問題も、先に規則を読み、そのあと変換するという順番になっています。変換そのものは10秒で終わるように作ってあるので、止まるとしたら必ず規則の読み取りのほうです。どこで止まったかを覚えておいてください。
※以下の4問と規則は、すべて数強塾で作成したオリジナルです。実際の試験問題ではなく、当塾の方針どおり試験の問題文・選択肢・図表は使っていません。
類題1 図案を数値にする規則
【規則】4行4列のマス目の各マスを、黒か白かで塗る。各行について、左から順に「黒を 1、白を 0」として4桁の2進法の数を作り、それを16進法1桁に直す。こうしてできた4つの数字を上の行から順に並べたものを、その図案のコードと呼ぶ。
あるコードが 9F2C であった。
- 各行を4桁の2進法で書きなさい。
- 黒く塗られたマスは全部で何個か。
- 上から2行目は、どのマスが黒か。
解答
| 行 | 16進 | 2進(左が1列目) | 黒の個数 |
|---|---|---|---|
| 1行目 | 9 | 1001 | 2 |
| 2行目 | F | 1111 | 4 |
| 3行目 | 2 | 0010 | 1 |
| 4行目 | C | 1100 | 2 |
(1) 上の表のとおり。(2) \( 2+4+1+2=9 \) 個。(3) F は 1111 なので2行目は4マスとも黒。
ここで効くのが、落とし穴の3番目「A〜Fを10〜15と即答する」です。F が 1111、C が 1100、9 が 1001 とすぐ出ないと、規則を読む余裕がなくなります。変換表を思い出しながら規則も追う、という二重作業になった時点で時間が足りません。変換は手が勝手に動く状態にしておく ─ 型2の準備とは、実はこれだけです。
この規則で読みまちがえやすいところ:「左から順に」と「上の行から順に」の2つを、どちらも逆に取り違えないこと。規則文に出てくる「左から」「上から」「右から」といった向きの言葉には、読みながら印をつけます。向きの指定は、規則文のどこかに必ず1回は書いてあります。
類題2 桁数が中途半端な規則
【規則】ある装置は、7個のスイッチの状態を左端を最上位とする7桁の2進法で表す。記録するときは左に0を1個足して8桁にしてから、4桁ずつ区切って16進法2桁で書く。
- 状態が \( 1011010 \) のとき、記録される16進法2桁を答えなさい。
- 記録が \( 2\mathrm{F} \) のとき、もとの7桁を答えなさい。
- 記録が \( 8\mathrm{A} \) になることはあるか。理由もつけて答えなさい。
解答
(1) 左に0を足して \( 01011010 \)。4桁ずつ区切って \( 0101\ |\ 1010 \) なので \( 5\mathrm{A} \)。
(2) \( 2\mathrm{F}=00101111 \)。左端の0を取って \( 0101111 \)。
(3) ありません。\( 8\mathrm{A}=10001010 \) で左端が 1 ですが、規則では左端に必ず 0 を足すことになっています。値で言えば \( 8\mathrm{A}=138 \) で、7桁の2進法で表せる最大の \( 1111111=127 \) を超えています。
(1) は、落とし穴の1番目と2番目を同時に踏ませる問題です。7桁を左から区切って \( 1011\ |\ 010 \) とすると \( \mathrm{B}2 \) という別の答えが出ます。区切りは必ず右から、足す0は必ず左から ─ この2つは、規則文に書いてある「左に0を1個足す」を読めば自動的に守れます。規則を読めば落とし穴を踏まないように作ってあるのが、型2の問題です。
(3) のような「できるか/できないか」を聞く形は、型2でよく出ます。変換して終わりではなく、出た結果が規則の範囲に収まっているかまで見せる問題です。2次関数の場合分けで「出た答えが仮定の範囲に入っているか確かめる」のと、やっていることは同じです。
類題3 色の短縮表記という規則
【規則】色を #RRGGBB の16進法6桁で表す方式に加えて、#RGB の3桁で書く短縮表記を認める。短縮表記は、各桁を2回ずつ繰り返して6桁に戻して読む。たとえば #4B7 は #44BB77 を表す。
- #0F8 が表す色を、R・G・B それぞれ 0〜255 の10進法で答えなさい。
- 4-5節に出てきた \( \mathrm{R}=46,\ \mathrm{G}=139,\ \mathrm{B}=87 \) の色を、6桁の16進法で書きなさい。
- この短縮表記で表せる色は何色か。6桁で表せる色数の何分の1か。
解答
(1) #0F8 → #00FF88 なので、\( \mathrm{R}=00_{(16)}=0 \)、\( \mathrm{G}=\mathrm{FF}_{(16)}=255 \)、\( \mathrm{B}=88_{(16)}=8\times 16+8=136 \)。
(2) \( 46=2\times 16+14 \) より \( 2\mathrm{E} \)、\( 139=8\times 16+11 \) より \( 8\mathrm{B} \)、\( 87=5\times 16+7 \) より \( 57 \)。よって #2E8B57。
(3) 3桁それぞれが16通りなので \( 16^{3}=4096 \) 色。6桁は \( 16^{6}=16{,}777{,}216 \) 色なので、\( \frac{1}{4096} \)。
(2) だけ、計算が必要だったことに気づきましたか。まとめの4番目に書いたとおり、10進が絡むときだけ計算が要ります。(1) と (3) は割り算を1回もしていません ─ 桁を置き換えて数えただけです。どの小問で筆算を始めたかを見れば、10進が絡んでいるかどうかが分かります。
色そのものの仕組みは 【情報Ⅰ 第29講】色の表現(RGB・CMYK・色の三属性)|なぜ画面は足すと白、印刷は足すと黒になるのか、2進法で表すという発想の出発点は 第32講 デジタルとアナログ/2進数で表す意味 にあります。
類題4 「何ビット必要か」を聞かれる向き
- 1画素あたり 200 色を表したい。最低で何ビット必要か。
- 1画素 8 ビット、\( 640\times 480 \) 画素の画像のデータ量は何バイトか。\( 1\mathrm{MB}=10^{6} \) バイト、\( 1\mathrm{MiB}=2^{20} \) バイトとして両方で答えなさい。
- 同じ画像を24ビットフルカラーにすると、データ量は何倍か。
解答
(1) \( 2^{7}=128 \) では 200 色に足りず、\( 2^{8}=256 \) なら足ります。8ビット。
(2) \( 640\times 480=307{,}200 \) 画素。1画素8ビット=1バイトなので 307,200 バイト。\( 10^{6} \) で割って約 0.307 MB、\( 2^{20} \) で割って約 0.293 MiB。
(3) 24ビットは8ビットの3倍なので 3倍(921,600 バイト)。
5章で「何色表現できるか」と「何ビット必要か」は逆向きの問いだと書きました。練習問題の (4) は「16ビットなら何色」という前向きだけで、逆向きが1問もありませんでした。この類題1つめが逆向きです。前向きは \( 2^{n} \) を計算するだけ、逆向きは \( 2^{n} \) が目標を超える最小の \( n \) を探す ─ 200色にちょうど合う \( n \) は無いので、「ぴったり」ではなく「足りる最小」を答えます。
データ量の考え方が音や文字に広がる先は 【情報Ⅰ 第33講】音のデジタル化──なぜ標本化周波数は「2倍」なのか と 文字のデジタル表現と文字コード|なぜ文字化けは起きるのか【情報Ⅰ第31講】、16進法が住所として使われる例は IPアドレスとサブネット|情報Ⅰ 最強120講義 第70講 にあります。
まとめ:型2は、3ステップに割ると崩れない
| ステップ | やること | 類題1でいうと |
|---|---|---|
| ①規則を番号つきで写す | 規則文を、1つの動作=1行に切って書き出す | 「左から2進にする」「16進1桁にする」「上の行から並べる」の3行 |
| ②向きの言葉に印をつける | 左から/右から/上から/下から を丸で囲む | 「左から」「上の行から」の2か所 |
| ③変換は機械的に、最後に規則を読み直す | 手が勝手に動く状態で変換し、規則の使い残しがないか確認 | 4行ぶん使ったか、並べる順は合っているか |
型2で差がつくのは①と②で、③ではありません。それでも③(変換そのもの)が遅いと、①②に頭を使う余裕が消えます。変換の速さは、規則を読むための土台だと考えてください。上の練習問題5問(型1・型3)は、そのための土台づくりです。
プログラムを読ませる型でも同じ手順が効きます ─ 共通テスト情報Ⅰ 第3問(プログラム)の解き方|情報Ⅰ 最強120講義 第100講 を参照してください。装置の中で数がどう置かれているかは 記憶階層とは何か――なぜ速い記憶と遅い記憶を混ぜて使うのか【情報Ⅰ 第38講】 にあります。
