
IPアドレス:172.16.1.20
サブネットマスク:255.255.255.128の場合
・ある問題集で、16進数を使って上のIPアドレスからネットワークアドレスを求める場合に、
(1).IPアドレスを16進数→ AC 10 01 14
(2).サブネットマスクを16進数→FF FF FF 80
---------
(3).ネットワークアドレス→ AC 10 01 00
~~
という感じで解答していたのですが、どうやって求めたのか分かりません。(3)の左から6桁と一番右は、(1)と(2)を比較して小さい方をとっていますが、右から2番目だけは1と8を比較して0となっているのはなぜでしょうか?教えてください。
No.6ベストアンサー
- 回答日時:
#5の補足に対して。
> その問題集には「2進数でもよいが桁が大きくなりすぎるので16進数での演算に慣れるように。」と、あったのですが16進数のままでANDをとる方法はないのでしょうか?
そもそも、論理演算自身が1ビットに対して行う演算なので2進数で演算するのが基本です。
255D(=0xff)だとか128D(=0x80)のような「わかりやすい」値ならともかく、変なビットの並びであれば16進数で計算するより2進数で計算する方がよっぽど「自然」です。
その証としてこれまでの回答者の皆さんは、2進数に直して計算する方法で解説していますし、あなた自身も16進数で?だったことが2進数で理解できました。
10進数を16進数に直すには10進数→2進数→16進数とするのが普通です(計算しやすい)。2進数が出た時点で論理演算するのが得策です。なぜなら、2進数→16進数の変換が要らない上に、16進数の方が論理演算しにくいのですから。
その問題集は、問題を解くだけのための解説に陥ってます。
No.4
- 回答日時:
No.3
- 回答日時:
16進で考えると分かりにくいかもしれません。
実際にはこれらの演算は2進で行われますので、2進数に変換してみます。
すると、
(1)10101100 00010000 00000001 00010100
(2)11111111 11111111 11111111 10000000
ですので、この2つのANDを取ると
(3)10101100 00010000 00000001 00000000
となります。
これを16進に戻すと最初の答えになります。
サブネットマスクとはホストアドレスの上位何ビットかをマスクして、サブネットアドレスとホストアドレスに分割するために使用するものなので、一度2進数に変換して考えていただければ分かりやすいと思います。
No.2
- 回答日時:
AND演算は、ビット単位の演算です。
比較する双方のビットが1の時のみ1になります。どちらか片方または双方共に0なら演算結果は0です。
さて、(1)、(2) は、2進数で書くと
(1) 1010 1100 0001 0000 0000 0001 0001 0100
(2) 1111 1111 1111 1111 1111 1111 1000 0000
となり、各ビットをAND演算すると
(3) 1010 1100 0001 0000 0000 0001 0000 0000
となり、16進表現で AC 10 01 00 となります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ネットワーク IPアドレスの範囲ってどうやって求めるんですか? 2 2023/01/05 01:37
- ファイアウォール IPアドレス 1 2022/06/24 19:46
- 固定IP スマホやPCのIPアドレスについて教えてください。 5 2023/07/07 19:53
- 固定IP MACアドレスはLAN内で相手を特定するアドレスですか? PCから監視カメラを閲覧するときに、セグメ 3 2022/07/23 09:04
- FTTH・光回線 グローバルIPアドレスの変更について 1 2022/04/23 05:32
- VPN 接続のたびにIPが変わるVPNサービスが知りたい 2 2022/06/27 02:34
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- その他(インターネット接続・インフラ) アプリ利用者を特定し、裁判に 2 2022/06/09 21:43
- 固定IP iPhoneでのIPv4切り替え方法 3 2022/11/24 22:26
- ネットワーク 一台のサーバーに複数個のIPアドレスを追加出来る事は知っていますが、具体的にどうやるのでしょうか? 4 2022/11/03 20:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
verilog 符号付加減算(最上位...
-
命令について
-
符号無し整数xを右にnビット回転
-
エクセルVBAのIf,Then 構...
-
スロースキャンコンピュータ 加...
-
ビット立つの意味
-
10進数(+-)→2進数への変換(2)
-
算術右シフトの結果が1/2になる...
-
MIPSアセンブラの問題です。
-
ビット列を表示するプログラム
-
整数除算の意味とは?
-
シーケンス制御についての質問...
-
16進数でのAND演算
-
一般のソフトで画像を扱う場合...
-
プログラムの割り算と掛け算
-
アクセス(2003)のVBAでビット...
-
ライン数とステップ数の違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
-
エクセルVBAのIf,Then 構...
-
03分22秒36のような時間の単位...
-
一般のソフトで画像を扱う場合...
-
C言語やC++言語でビット毎に値...
-
シーケンス制御についての質問...
-
PS3に搭載されている"Cell"は、...
-
ビット演算子
-
Endianについて パート2
-
verilog 符号付加減算(最上位...
-
ビットの取り出し方法
-
PLC 命令について
-
命令について
-
符号無し整数xを右にnビット回転
-
16ビットCPUで32ビットの計算方法
-
浮動小数点数の内部表現につい...
おすすめ情報