解説
IPアドレスは前半が「ネットワーク部」(どのグループに属するか)、後半が「ホスト部」(その中の何番目の機器か)に分かれています。どこまでがネットワーク部かを決めるのがサブネットマスク(例:255.255.255.0)です。
IPアドレスとマスクをビットごとにAND演算すると、マスクが1の桁だけが残り、ネットワーク部が取り出せます。ANDは「両方1のときだけ1」になる演算です。
同じネットワークに属する2台は、ネットワーク部が一致します。
書き方
・zip(ip, mask): 2つのリストを先頭から組にして同時に取り出す。
・a & m: ビットごとのAND演算(両方1の桁だけ1)。
・リスト.append(r): 計算結果をネットワーク部に追加。
・'.'.join(map(str, ip)): map(str, ...) で各要素を文字列化し '.' で連結。
・f"{a:>3}": f文字列で右寄せ3桁に整形。書いて動かす
この回の課題
IPアドレスとサブネットマスクをオクテットごとにAND演算し、ネットワーク部を取り出してみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
自分のPCでも続けてみませんか
Windows版 InsightPy は Python を同梱しているので、環境構築なしで同じコードを書いて実行できます。 書いたコードを保存しておけるほか、ステップ実行で変数の変化を1行ずつ確かめられます。 個人の学習や私的な目的でのご利用は、31日目以降も無料です(スクリプトの保存は10本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。