冬期講習 2026-2027、募集中。総復習は売りません。90分×完全1対1で、穴だけを塞ぎます 詳しく →
電話 0422-27-7828チャットで質問無料相談を予約

武蔵野個別指導塾の特徴

高校情報I IPv4アドレス—区切られた数をビット列へ直して表記の範囲を確かめる|武蔵野個別指導塾

学習のイメージ写真 武蔵野個別指導塾
X LINE Facebook

8ビットごとの変換と逆変換を通して、桁落ちや範囲外の値を見分け、IPv4アドレスを読み解きます。

よくあるのは、高校生がアドレスの点で区切られた十進数を、そのまま二進数の桁として読もうとする場面です。例えば十進数の2は二進数の1桁では表せません。各組を数として変換し、8桁にそろえてから順につなげると、同じアドレスを32ビットで表せます。

問題には、十進数からビット列を作る型、ビット列から元の表記に戻す型、桁数や範囲の誤りを見つけて直す型があります。どの型でも、変換した値と桁数の両方を点検します。以下のアドレスは文書中の説明のために予約された範囲から選んだ学習用の例で、実際の通信先として使いません。

4組と32ビットの関係

IPv4アドレスは32ビットの情報です。1ビットには0か1が入ります。読みやすい表記では左から8ビットずつ4組に分け、各組を十進数に直して点で区切ります。点は組の境目を示す記号であり、0や1の桁には含めません。4組の数を足すのでもなく、それぞれを独立に8ビットへ直して左から並べます。

図1のように、8ビットを4組つなぐと32ビットです。最初の組と最後の組を入れ替えると別のビット列になります。組の順番もアドレスの一部として保ってください。

図1 32ビットを8ビットずつ4組に分ける

各組の8桁には、左から128、64、32、16、8、4、2、1の重みがあります。その位置が1なら重みを足し、0なら足しません。例えば00000101は4と1を足して十進数の5です。数字の形が似ていても、十進数の101と同じ値ではありません。ここではビット列を明示するため、先頭が0でも省かずに書きます。

8桁が全部0なら0、全部1なら128 + 64 + 32 + 16 + 8 + 4 + 2 + 1で255です。したがって各組は0以上255以下です。256は8ビットでは表せません。9桁の100000000を得たとしても、余った1を隣の組へ移して元のアドレスにしてはいけません。最初に与えられた表記が各組の範囲を満たすか調べます。

十進数から戻すには、左の重みから順に残りの数と比較します。重み以上なら1を書いて引き、足りなければ0を書きます。最後に残りが0になれば選んだ重みの和が元の数です。0の場合も空欄にせず00000000とします。先頭の0は値を変えませんが、8ビットの位置を保つために必要です。

この操作は表記の変換です。どの機器に割り当てられるかや通信が成功するかは、ビット列の形だけでは決まりません。また、点の位置は読みやすく区切るためのものであり、ネットワークの範囲を判定する条件を示すものではありません。

基本例題:最後の組を8桁にする

学習用のアドレス192.0.2.13を、点で区切った4組の8ビットの二進数で表してください。各組の順序を保ち、先頭の0も書きます。その後、各組を十進数に戻して入力と一致するか確かめます。

最初の組192は128 + 64です。 128と64の位置を1、残りの位置を0にして11000000です。 2番目の組0は、どの重みも使わないので00000000です。 3番目の組2は、2の位置だけを使うので00000010です。 最後の組13は8 + 4 + 1です。 128、64、32、16の位置は0、8と4の位置は1、2の位置は0、1の位置は1です。 したがって最後は00001101です。

答えは11000000.00000000.00000010.00001101です。図2のように、各組の左右を対応させます。点を除けば8ビットが4組で32ビットです。

図2 基本例題で十進数と8ビットを対応させる

逆に戻すと、11000000は128 + 64で192、00000000は0、00000010は2、00001101は8 + 4 + 1で13です。結果は192.0.2.13に戻ります。最後の13を1101とだけ書くと数の値は同じでも、4組の8ビットという指定を満たさず、区切りを除いたとき32桁になりません。

引き算で最後の組を作る方法もあります。13は128、64、32、16より小さいので最初の4桁は0です。8を引くと5、4を引くと1が残ります。残り1は2より小さく、1を引くと0です。選んだ位置を並べると同じ00001101となります。重みを左から調べた記録があれば、どこで余りを取り違えたかも追えます。

標準例題:ビット列から表記へ戻す

学習用に、11000110.00110011.01100100.00101101という4組を受け取ったとします。各組を十進数に直し、点で区切ったアドレスを答えてください。あわせて、得た各数を元の8ビットに戻して照合します。

最初の11000110は128 + 64 + 4 + 2で198です。 2番目の00110011は32 + 16 + 2 + 1で51です。 3番目の01100100は64 + 32 + 4で100です。 最後の00101101は32 + 8 + 4 + 1で45です。 順を保って並べると198.51.100.45です。

逆向きに、198は128 + 64 + 4 + 2、51は32 + 16 + 2 + 1、100は64 + 32 + 4、45は32 + 8 + 4 + 1です。それぞれの重みの位置に1を置けば、問題の4組に戻ります。198.51.100.0から198.51.100.255までの文書用範囲内にあることも、最初の3組と最後の値を見て確かめられます。

変換途中で64の位置を見落とすと、最初の組は134と誤ります。134も0から255の範囲には入るので、範囲の確認だけではその誤りを見つけられません。逆変換した10000110と元の11000110を桁ごとに比較すると、左から2番目が違います。範囲の検査と元に戻す検査は、それぞれ異なる間違いを見つけるために使います。

発展例題:候補を作って条件を検証する

学習用の203.0.113.160について、最後の組の左から3桁目だけを0から1に変え、他の31ビットは変えません。変えた後のアドレスを十進数の点区切りと、4組の8ビットの両方で答えてください。変更前後の最後の組も照合します。

203は128 + 64 + 8 + 2 + 1なので11001011です。 0は00000000、113は64 + 32 + 16 + 1なので01110001です。 160は128 + 32なので10100000です。 最後の組の左から3桁目は32の位置です。ところが、その位置はすでに1です。

したがって、指定された「0から1に変える」操作はこの入力に適用できません。条件を満たす変更後のアドレスは作れません。無理に32を足して192とすると、最初から1だった位置を二重に数え、他の位置まで変わってしまいます。変換の問題では、計算する前に変更対象の桁が指定どおりか確かめることも必要です。

条件を「左から2桁目を0から1に変える」と直した場合を比べます。2桁目は64の位置で、10100000では0です。ここを1にすると11100000、十進数では128 + 64 + 32で224です。変更後は203.0.113.224、ビット列は11001011.00000000.01110001.11100000です。元の160との差は64で、最後の組以外は同じです。224を8ビットに戻して11100000となることも確認できます。

このように、問題が成立しない場合は数を作る前に理由を示します。条件を直した場合の結果は元の問いの答えとは分けます。表記の変換ができても、変更先が実際に利用できるかどうかは別の条件が必要です。

誤答を見つけて直す

192.0.2.9の最後の組を、十進数の数字をそのまま並べて「9」と書いたとします。これは二進数の桁として使える0と1以外を含むため、8ビットの表記になりません。9は8 + 1なので、正しくは00001001です。図3のように値を重みへ分解してから位置を埋めます。

図3 十進数をそのまま書く誤りと8ビットへの修正

別の間違いとして、9を1001と変換したところで止める場合があります。1001の値は確かに9ですが、1組を8ビットとする条件では4桁不足しています。左に0を4個補い、00001001とします。補った後も8 + 1で9に戻るので、値と幅を同時に点検できます。

また、256を8ビットに無理に押し込めると、値か桁数のどちらかが崩れます。8桁の最大値は255なので、256を含む組はこの表記の条件から外れます。0から255に収まっていること、0と1だけで8桁あること、逆変換で元の値に戻ることを別々に確認しましょう。1つの検査に通っただけでは他の誤りが残ることがあります。

練習問題

次の5問はそれぞれ独立した学習用の条件です。アドレスは文書用範囲の表記として扱い、実際の通信先にはしません。ビット列は各組8桁で、点を境目として書いてください。

  1. 192.0.2.74を4組の二進数に直してください。各組を十進数へ戻し、元の表記を確認してください。
  2. 11001011.00000000.01110001.00010110を点区切りの十進数に直してください。最後の組を再び8桁に直して確認してください。
  3. 198.51.100.256という候補は、4組の十進数によるIPv4アドレスの表記として成立しますか。理由と、最後の組の最大値を答えてください。
  4. 192.0.2.6を「11000000.0.10.110」と書いた記録があります。各組を8桁に直し、点を除いた総ビット数と、戻した十進数を答えてください。
  5. 203.0.113.81の最後の組で、左から4桁目だけを1から0に変えます。変更後の4組の二進数と十進数の表記を答え、変更前後の差を確かめてください。

練習の答えと解き方

1の答え

74は64 + 8 + 2です。よって01001010です。192は11000000、0は00000000、2は00000010なので、答えは11000000.00000000.00000010.01001010です。逆に各組を足すと192、0、2、74となり、192.0.2.74に戻ります。最後の組で64の位置を左端に置くと128として数えてしまうので、8つの重みを左から対応させます。

2の答え

11001011は128 + 64 + 8 + 2 + 1で203です。00000000は0、01110001は64 + 32 + 16 + 1で113、00010110は16 + 4 + 2で22です。答えは203.0.113.22です。22を16 + 4 + 2に分けて8つの位置に戻すと00010110となり、受け取った最後の組と一致します。

3の答え

成立しません。最後の256は8ビットの最大値255を超えます。他の3組が範囲内でも、最後の組を8ビットとして表せないためです。最大の11111111を重みの和に戻すと255であり、256には届きません。最後の数を勝手に変えると別の候補になるため、元の候補の変換結果とはしません。

4の答え

答えは11000000.00000000.00000010.00000110です。各組を左から8桁にそろえたので、点を除くと32ビットです。十進数に戻すと192.0.2.6です。元の短い表記も各組の数値自体は正しいものの、指定された幅を満たしていません。点を残したまま各組に0を補うことで、組の境目を取り違えずに修正できます。

5の答え

81は64 + 16 + 1なので01010001です。左から4桁目は16の位置で、確かに1です。そこを0にすると01000001となり、64 + 1で65です。答えは11001011.00000000.01110001.01000001、十進数では203.0.113.65です。81から65を引いた差は16で、変更した位置の重みと一致します。他の組を戻すと203、0、113で、変更前と同じです。

覚えておくこと

つまずいた位置の見分け方

変換後の数が合わないときは、まず各桁に128から1までの重みを書いて、1の位置を足し直します。値は合うのに総数が32ビットにならない場合は、各組の先頭の0が落ちていないか確認します。範囲外の数が出た場合は、9桁に伸ばして続ける前に入力を見直します。

個別指導で確認するなら、1組について変換の途中と逆変換を口に出し、残りの組へ同じ手順を移せるかを見ます。値、幅、順序のどこでずれたかを示せれば、別のアドレスでも自分で修正できます。

読んで終わりにするか、ここから変えるか。

武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。

まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。

本気になった日が、入塾の日。

お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。

電話は年中無休。365日、24時間、お電話可能。

チャットで質問チャット
無料相談を予約する 電話 0422-27-7828電話 LINE チャット
で質問