
武蔵野個別指導塾の特徴
【情報I】よくあるつまずきと直し方を図解で総まとめ—進法の変換・情報量の単位・繰り返しの回数・相関の読み違い|武蔵野個別指導塾

2進法の桁、ビットとバイト、繰り返しの境界、相関と因果を例題で点検します。桁の図と添字の図を使い、間違えた答えのどこに戻ればよいかを具体的に確かめられます。
よくあるのは、駅のホームのベンチで情報Iの答案を見返し、「計算は合っているのに、どうして答えが違うのだろう」と手が止まる場面です。2進法の数字を足した跡も、繰り返しを追った跡も残っています。それでも正解と合わないときは、計算の速さではなく、数字が表しているものを取り違えている可能性があります。たとえば、同じ「4」でも、要素の個数なのか、最後の添字なのかによって意味が変わります。
情報Iの間違いには、直す場所を見つけやすいものがあります。桁の重みを書かなかった、単位を途中で消した、反復の終わりを含めた、同時に変わることを原因だと考えた、といった違いです。正解を写す前に、どの判断でずれたかを言葉にできると、次の問題で確かめる場所が定まります。ここでは4種類のつまずきを、図と短いプログラムでほどきます。間違いを「うっかり」の一言で閉じず、確かめ直せる手順に変えていきましょう。
この単元で身につけること
- 進法の数字と桁の重みを分けて読めるようにします。2進法では右端から1、2、4、8と重みを置き、各桁の数字との積を足します。逆向きの変換で元の値に戻るかも点検します。
- ビットとバイトを単位つきで扱います。1バイトが8ビットであることを出発点にして、画像などのデータ量を求める途中にも単位を残します。8を掛けるか割るかを、求めたい単位から決めます。
- 繰り返しの回数と添字を区別します。Pythonのrangeでは終わりの値を含めないこと、リストの先頭の添字は0であることを、実際に使われる値の一覧に直します。
- 相関と因果の説明を分けます。一緒に増減するという観察だけで原因を決めず、別の要因や調べ方の影響を考えます。データで言える範囲に合わせて結論の言葉を選びます。
- 答えが違ったとき、最初にずれた行へ戻ります。結果だけを合わせる修正ではなく、桁・単位・境界・結論のいずれを取り違えたのかを記録します。
中学校の位取りと単位換算、情報Iで学んだ変数・リスト・散布図が土台になります。別々の単元に見えても、「この数や記号は何を意味するか」を一つずつ確かめる読み方は共通です。
基本の考え方
進法では数字の形より桁の重みを見ます
10進法の305は、3+0+5ではありません。百の位が3個、十の位が0個、一の位が5個なので、3×100+0×10+5×1です。2進法でも同じ位取りの考え方を使います。ただし、使う数字は0と1で、左へ1桁移ると重みが2倍になります。右端の重みは2ではなく1です。ここを2から始めると、すべての桁の重みが2倍になり、答えも2倍にずれます。
図1のように、2進法の101101の下に重みをそろえて書くと、足すべき数が見えるようになります。重みは右から1、2、4、8、16、32です。数字が1の桁だけを選ぶため、32+8+4+1=45となります。0の桁を飛ばして書き詰めると位置がずれるので、途中式では0の桁にも重みを置いてください。

図1で16と2の桁は0になっていますが、その桁自体がなくなったわけではありません。10進法の305から十の位を消して35にできないのと同じです。反対に、先頭に0を付けた0101101は、数としては同じ45を表します。数値の大きさと、記録に用いるビット数は別なので、固定長の表現を問う問題では先頭の0にも意味があります。
10進法から2進法へ直すときは、2で割った余りを使えます。最初の余りが一の位、次の余りが二の位に対応するため、余りを出た順に左から並べるのは誤りです。商が0になるまで続け、最後に出た余りから逆順に読みます。変換が不安なときは、重みを使って10進法に戻せば、別の手順で結果を照合できます。
16進法でも考え方は変わりません。右から1、16、256という重みを使い、AからFは10から15を表します。たとえば16進法の2Dは2×16+13=45です。「Dという桁の値」と「その桁が置かれた位置の重み」を分ければ、文字が混じっていても同じ計算で扱えます。
データ量では「何個分か」と「何単位か」を残します
ビットは0か1の状態を表す最小の単位です。1ビットで区別できる状態は2通りで、2ビットなら00、01、10、11の4通りです。nビットでは2ⁿ通りを区別できます。ここで「8ビットは8通り」と考えると、ビット数と表現できる状態の数を混同しています。8ビットで区別できるのは2⁸=256通りです。
バイトはビットをまとめた単位で、1バイト=8ビットです。したがって、24ビットは3バイトです。大きい単位へ直すと数値は小さくなり、ビットからバイトへは8で割ります。一方、3バイトをビットに直すと24ビットになるので8を掛けます。「情報の問題だから8を掛ける」と覚えるのではなく、左辺と右辺の単位をそろえて判断します。
画像のデータ量なら、画素数と1画素当たりのビット数を分けます。横の画素数×縦の画素数で画素の個数を求め、それに1画素当たりのビット数を掛ければ、画像全体のビット数になります。RGBの各色が8ビットなら、1画素全体は8×3=24ビットです。「各色8ビット」と「1画素8ビット」は同じ条件ではありません。
この計算は、圧縮せず、画素以外の付加情報を除くという条件で使います。保存されたファイルには付加情報が含まれたり、圧縮によって量が変わったりします。また、kBやMBなどへの換算では問題文が示す定義を確認します。ここでは換算の根拠を見失わないよう、ビットとバイトまでで答えを出します。
境界と結論は、含めてよい範囲を確かめます
繰り返しでは、最初と最後に処理される値を先に確かめます。Pythonのrange(0, 4)は0、1、2、3を順に生成し、4は含みません。増分が1で、開始値より終了値が大きい場合、回数は終了値−開始値です。ただし、この式を増分が2の場合や減少する場合へそのまま使うことはできません。短い範囲なら、値を書き出すのが確実です。
リストに4個の要素があれば、添字は0、1、2、3です。日常の「1番目」と添字1は対応せず、添字1は2番目を指します。繰り返しの変数を添字として使うなら、生成されるすべての値が有効な添字かを調べます。問題文に別の言語や疑似言語が示されているときは、その問題の添字や反復の定義に従い、Pythonの規則を無条件に当てはめないことも必要です。
データ分析にも、結論に含めてよい範囲があります。正の相関は、一方が大きいと他方も大きい傾向を表します。負の相関は、一方が大きいと他方は小さい傾向です。どちらも原因の方向までは示しません。相関の強さを見る場合も符号と大きさを分けます。相関係数が0に近いからといって、曲線的な関係まで含めて「何の関係もない」とは言えません。
例題で解き方を確かめる
例題1 進法の変換を往復して確かめる
2進法の101101を10進法で表し、その答えを2進法へ戻してください。また、同じ数を16進法で表してください。変換の手順を片道だけで終わらせず、元に戻るところまで確かめます。
- 右端から1、2、4、8、16、32と重みを書きます。右端を1と決めてから埋めることで、途中の0に引きずられて桁がずれるのを防げます。
- 1×32+0×16+1×8+1×4+0×2+1×1=45と計算します。1の個数を数えるのではなく、1が置かれた桁の重みを足すためです。
- 45を2で割ると商22・余り1、22では商11・余り0、11では商5・余り1、5では商2・余り1、2では商1・余り0、1では商0・余り1です。最初の余りは最下位の桁に対応するので、逆に読んで101101とします。
- 45=2×16+13と分け、13をDで表します。16進法では1桁に0から15までを使うため、同じ数は2Dになります。
答え:10進法で45、2進法へ戻すと101101、16進法で2Dです。
Pythonでも、基数を指定して文字列を整数へ直し、別の基数の表現へ戻せます。手計算をした後で次の短い処理を実行すると、どこを確かめているのかがはっきりします。
value = int("101101", 2)
print(value)
print(format(value, "b"))
print(format(value, "X"))
出力は次のとおりです。
45
101101
2D
intの第2引数の2は、元の文字列を2進法として読む指定です。文字列が「101101」という形でも、基数の指定が違えば意味が変わります。formatの指定bとXは、それぞれ2進法と大文字を使う16進法の表現を求めています。出力が一致したら、正解だけでなく、重みを置いた行も残しておきましょう。
例題2 画像のデータ量を単位つきで求める
横96画素、縦64画素の画像があります。RGBの各色を8ビットで表すとき、画像のデータ量は何バイトですか。圧縮せず、画素以外の付加情報は含めないものとします。
- 画素数を96×64=6144画素と求めます。縦と横は画素の配置を表すので、足すのではなく掛けて全体の個数にします。
- 1画素当たりを8×3=24ビットと求めます。問題文は各色8ビットなので、RGBの3色分をまとめる必要があります。
- 6144×24=147456ビットと計算します。画素の個数に1画素分の量を掛けることで、画像全体の量になります。
- 147456÷8=18432バイトと直します。求められているのはバイトで、8ビットを1組にまとめるため、最後は8で割ります。
答え:18432バイトです。
別の確かめ方として、1画素の24ビットを先に3バイトへ直してもかまいません。6144×3=18432バイトとなり、同じ答えです。147456という数だけを書いて終えると、ビットでは正しくても問いには答えていません。途中式の末尾に単位を付ければ、計算の誤りと換算の抜けを区別できます。
なお、8ビットで表せる256通りという数を、1画素のデータ量として掛けることはできません。256は各色の段階の数であり、記録に必要なビット数は8です。「何通りを区別できるか」と「いくつのビットを使うか」は、同じ対象を別の方向から見た数です。
例題3 繰り返しと添字を同じ表に置く
次のリストのすべての要素を、先頭から順に表示します。何回繰り返すか、各回で何が表示されるかを答えてください。続いて、同じ範囲の繰り返しで合計を求めます。
values = [4, 7, 2, 9]
for i in range(0, 4):
print(i, values[i])
- リストの要素を数え、個数は4、添字は0から3と書きます。個数を最後の添字として使わないよう、2つを並べて区別します。
- range(0, 4)が生成する値を0、1、2、3と書きます。終了値4を含まないため、反復回数は4回です。
- 各添字の下に値を対応させます。図2のように並べると、添字2が値2を表すのはこのリストでたまたま一致しただけだとわかります。
- printの順序どおり、添字と要素の値を1行ずつ読みます。表示するのはiだけでもvalues[i]だけでもなく、両方だからです。

出力は次のとおりです。
0 4
1 7
2 2
3 9
答え:繰り返しは4回で、出力は順に「0 4」「1 7」「2 2」「3 9」です。
図2の右側の4はrangeの終了値で、リストの要素が入った箱ではありません。もし終了値を5に変えると、iが4になった回で存在しない要素を参照し、IndexErrorが発生します。反対に、開始値を1に変えるとエラーは起きなくても先頭の4が処理されません。エラーがないことだけでは、必要な要素を全部処理した証拠にはならないのです。
合計を求める処理では、足す前の値も追います。次のプログラムでtotalは、処理した要素の合計を保持する変数です。
values = [4, 7, 2, 9]
total = 0
for i in range(0, 4):
total = total + values[i]
print(total)
出力は次のとおりです。
22
totalは初期値0から、4、11、13、22と変わります。初期化を繰り返しの内側に置くと毎回0に戻り、それまでの合計を失います。また、printは繰り返しの外側なので、途中の合計を4回表示するのではなく、最後の22だけを1回表示します。Pythonでは字下げが処理のまとまりを表すため、同じ命令が並んでいても位置によって働きが変わります。
例題4 相関の説明から原因の断定を取り除く
ある場所で、暑い日に冷たい飲み物の販売数が多く、冷房の使用時間も長くなる傾向が見られました。この観察から「冷たい飲み物の販売を減らせば、冷房の使用時間も短くなる」と結論づけてよいでしょうか。販売数と使用時間には正の相関が見られたものとします。
- 観察された2つの量を取り出します。ここでは販売数と使用時間であり、まず「販売数が多い日は使用時間も長い傾向」と、データが示す範囲で言い直します。
- 原因として主張されている方向を取り出します。元の結論は、販売数を変えると使用時間が変わると述べており、単なる同時の増減より踏み込んだ内容です。
- 両方に関わる別の要因を考えます。気温が高いことで飲み物の需要と冷房の必要性がともに増える可能性があり、販売数が使用時間を直接変えなくても相関は生じます。
- 観察と原因の候補を分けて答えます。気温などの条件をそろえた比較や追加の調査が必要で、今ある相関だけでは販売数を操作した結果まで決められないためです。
答え:結論づけられません。正の相関は見られますが、気温が両方に影響した可能性があり、販売数から使用時間への因果関係は確定していません。
「相関があるから原因である」も、「相関にすぎないから原因ではない」も言い過ぎです。因果関係が存在する可能性は残しながら、それを確定する材料が足りないと判断します。追加のデータを集める場合も、気温だけを調整すれば必ず因果が証明できるわけではなく、人の多さや営業条件など、比べる条件を検討する必要があります。
つまずきやすいところと直し方
桁と単位を、数字から切り離してしまう
誤った書き方は「2進法の101101は1+0+1+1+0+1=4」「147456ビット=147456バイト」です。どこが違うかというと、前者は位置ごとの重みを無視し、後者は大きさの異なる単位を同じものとして扱っています。どちらも数字の列だけを見て、その数字に付いている意味を落としています。
正しい書き方は「32+8+4+1=45」「147456ビット÷8=18432バイト」です。進法なら数字の下に重み、データ量なら数値の後ろに単位を置きます。計算を書き直す前に、この補助情報だけを答案へ書き足すと、どの操作が必要だったかが見えてきます。計算結果の大小も点検でき、ビットからバイトへ換算したのに数が8倍になったら、向きを逆にしたと気づけます。
個数・添字・終了値を同じ数だと思ってしまう
誤った書き方は「4個の要素の最後はvalues[4]」「range(0, 4)は0から4までの5回」です。どこが違うかというと、リストの個数と添字の上限、rangeで含めない終了値を混ぜています。正しい書き方は「最後はvalues[3]」「生成される添字は0、1、2、3で4回」です。
修正するときは、最初の回と最後の回を試してください。合計だけを見ると、たまたま省いた要素が0で、範囲の誤りが表に出ないことがあります。先頭と末尾に異なる値を置き、処理した添字を表示すれば、省略や重複が見つけやすくなります。whileでも同様に、条件を判定する直前の値、処理後の値、更新後の値を区別します。「4以下」と「4未満」の差が反復1回分に当たるのかは、初期値と更新の仕方まで見て判断します。
一緒に変わることを原因と書いてしまう
誤った書き方は「飲み物の販売数が増えたので、冷房を長く使うようになった」です。どこが違うかというと、相関という観察から、販売数を原因とする説明へ根拠なく進んでいます。正しい書き方は「販売数と使用時間に正の相関が見られるが、気温が両方へ影響する可能性もある」です。
図3のように、原因の候補を上に置き、影響を受ける2つの量へ矢印を分けると、別の説明を考えられます。この図の矢印は考えられる影響の方向であり、観察だけでその因果を証明した印ではありません。下側の点線は2つの量の相関を示し、原因の向きを表す矢印とは描き分けています。

図3を使って説明するときは、「気温が原因だと判明した」と結論を入れ替えないでください。別の説明が成り立つため、最初の結論に飛びつけないというのが大事な点です。散布図の点がきれいに並ぶ場合も、相関の強さと因果の証拠の強さを同一視せず、どう集めたデータかに戻って考えます。
練習問題
答えを出すときは、数字だけで終えず、点検した箇所を一言添えてください。計算問題は途中の単位、反復問題は実際に使われる添字、データ分析は言えることと言えないことを残します。前の例題と数が変わっても、同じ確認手順を使えるかが目標です。
練習1
2進法の11010を10進法へ直してください。続いて、10進法の19を2進法へ直してください。どちらも桁の重みを使って結果を確かめ、先頭の不要な0は付けないものとします。
練習2
横80画素、縦50画素で、RGBの各色を8ビットで表す画像があります。圧縮せず、画素以外の付加情報を含めないとき、データ量は何ビット、何バイトですか。「1画素当たり」の量も途中に書いてください。
練習3
リストvaluesの内容を[3, 8, 5, 6]とします。totalを0で初期化し、iをrange(1, 4)で変化させて、各回でvalues[i]をtotalに加えます。反復回数と最後のtotalを答えてください。また、すべての要素を足すには、rangeの開始値をどう直せばよいでしょうか。
練習4
同じ通りを何日か観察したところ、傘を差す人が多い日は、水たまりも多い傾向がありました。「傘を差す人を減らせば水たまりも減る」と結論づけてよいでしょうか。両方に影響しそうな別の要因を1つ挙げて説明してください。
答えと解説
練習1の答えは26と10011です。11010は16+8+2=26です。19は16+2+1なので、重み16、8、4、2、1に対応する数字を並べると10011になります。間にある0を省くと違う値になるので、使わない重みの位置も残します。
練習2の答えは96000ビット、12000バイトです。画素数は80×50=4000で、1画素当たり8×3=24ビットです。4000×24=96000ビットとなり、8で割って12000バイトです。先に1画素3バイトと直してから4000を掛けても一致します。
練習3の答えは3回、19です。iは1、2、3なので、足す値は8、5、6で、totalは8、13、19と変わります。先頭の3が抜けているため、全要素を足すには開始値を0へ直し、range(0, 4)とします。その場合の合計は22です。終了値を増やす修正では、先頭の抜けを補えません。
練習4は結論づけられません。降雨があると傘を差す人が増え、水たまりもできやすくなるという説明が考えられます。傘と水たまりの相関だけでは、傘を減らしたときの変化は決められません。「雨が共通の要因である可能性」と書き、観察した事実と原因の候補を分けるのが適切です。
次の単元へのつながりと家庭での確かめ方
桁・単位・境界・結論を区別する力は、情報Iの全体を整理するときにも使えます。デジタル表現で求めたデータ量は通信にかかる時間の計算へ、添字と反復は探索や集計へ、相関の読み方はデータを根拠にした提案へつながります。単元名が変わっても、数値の意味を先に定める順序は変わりません。
家庭では、次の2つをそれぞれ5分ほどで確かめられます。1つ目は、4桁の2進数を1つ作り、桁の重みで10進法へ直してから2で割る方法で戻すことです。途中の0を含む数字を選ぶと、位置を保って読めるかを点検できます。間違ったときは消してやり直す前に、最初に一致しなくなった桁へ印を付けます。
2つ目は、紙に4個の箱を描き、上に添字0から3、下に好きな整数を書き、range(1, 4)で処理する箱だけを囲むことです。最後に開始値を0にしたときに加わる箱を確かめます。お子さまの説明を聞く場合は、答えの数より「なぜこの箱が入らないのか」を聞くと、境界を理解しているかが見えます。
個別指導では、誤答の種類に応じて、10進法の位取り、1バイトのまとまり、最初の1回の代入まで戻って確かめます。相関の問題なら、まず観察された事実だけを文にし、そこへ原因の説明を付け加えた箇所を一緒に探します。
まとめ
間違えた答案には、次に読むべき場所が残っています。計算が違ったのか、その前に数の意味を取り違えたのかを分ければ、復習の出発点を選べます。正解を見た直後にもう一度解けるだけでなく、数字や条件を変えた問題でも同じ確認をできることが、理解を確かめる目安になります。
「気をつける」と余白に書く代わりに、「右端の重みは1」「終了値は含まない」のように、次の行動が決まる言葉を残してください。直すべき場所を説明できる誤答は、次の問題で使える判断の根拠です。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。



