• ベストアンサー

16進数でのAND演算

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進数の方が論理演算しにくいのですから。 その問題集は、問題を解くだけのための解説に陥ってます。

noname#13006
質問者

お礼

ありがとうございました。 へたに特別な方法を覚えずに今までどおり地道に2進数でやるようにします。 

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • rot-N
  • ベストアンサー率27% (118/432)
回答No.5

必要なbitだけを取り出すのに、ANDの演算をします。 16進数を2進数に戻し、各bit毎にANDの演算をしているだけです。 それ以上の説明が必要であれば、もう少し手前から勉強をし直すこと。 以上(^o^)。

noname#13006
質問者

補足

ご回答ありがとうございました。  その問題集には「2進数でもよいが桁が大きくなりすぎるので16進数での演算に慣れるように。」と、あったのですが16進数のままでANDをとる方法はないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.4

参考URLを参考にすると良いかもしれません。

参考URL:
http://mt-net.vis.ne.jp/ADFE_mail/0212.htm
noname#13006
質問者

お礼

ご回答ありがとうございました。教えていただいたことを今後の勉強に役立てたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • th9
  • ベストアンサー率59% (192/321)
回答No.3

16進で考えると分かりにくいかもしれません。 実際にはこれらの演算は2進で行われますので、2進数に変換してみます。 すると、 (1)10101100 00010000 00000001 00010100 (2)11111111 11111111 11111111 10000000 ですので、この2つのANDを取ると (3)10101100 00010000 00000001 00000000 となります。 これを16進に戻すと最初の答えになります。 サブネットマスクとはホストアドレスの上位何ビットかをマスクして、サブネットアドレスとホストアドレスに分割するために使用するものなので、一度2進数に変換して考えていただければ分かりやすいと思います。

noname#13006
質問者

お礼

ご回答ありがとうございました。教えていただいたことを今後の勉強に役立てたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • kaZho_em
  • ベストアンサー率50% (2950/5879)
回答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 となります。

noname#13006
質問者

お礼

ご回答ありがとうございました。教えていただいたことを今後の勉強に役立てたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

2進に直して考えるとわかりやすいのでは? 80は10000000ですので。 14は00010100です。 これでかければ下の方の10100が消えるのがわかると思いますが。

noname#13006
質問者

お礼

ご回答ありがとうございました。教えていただいたことを今後の勉強に役立てたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 16進数のAND演算

    IPアドレス:176.16.1.20 サブネットマスク:255.255.255.248の場合 ●ネットワークアドレスを求める 1.IPアドレスを16進数 → AC100114 2.サブネットマスクを16進数 → FFFFFF80 1と2のビットごとのANDをとった部分がネットワークアドレスだと思うのですが、この場合、AC100110で良いのでしょうか? ビットごとのANDをとった部分とは、同じ位置の数字を比較して数が小さいほうをとったもので良いのでしょうか?

  • CCNAの練習問題サブネットについて

    CCNA取得に向けて勉強を始めており、練習問題を解いているのですが、以下の問題の意味と解答が恥ずかしながら全く理解できないため、かみ砕いた内容で解説していただけると大変助かります。 解説にある「均等に8つに分けるためサブネットマスクは255.255.224.0(/19)となります。」とありますが、ここでサブネットマスクが255.255.224.0(/19)となる理由が特に知りたいです。 (問題) ネットワーク172.25.0.0が8つの等しいサブネットに分割されている。ルータでipsubnet-zeroコマンドが設定されているときに、3番目のサブネットのホストに割り当てることができるIPアドレスはどれか? 3つを選択せよ。 (解答) ip subnet-zero クラスフルネットワークをサブネット化した後の最初のサブネットアドレスはゼロサブネットと呼ばれます。 例:172.25.0.0/16(クラスフルネットワークアドレス) 172.25.0.0/24(クラスレスネットワークアドレス)    上記の場合、172.25.0.0/24がゼロサブネットとなります。    そのため172.25.0.0/16とホスト部のビットが同様になるため区別ができません。 また、ホスト部のビットがすべて1であるものをオールワンサブネットといいます。 「ip subnet-zero」コマンドはゼロサブネットとオールワンサブネットをクラスレスネットワークとして使用できるようにするコマンドです。 クラスフルアドレス IPアドレスには以下図のようなクラスがあります。 5つのクラスのうち、ユーザに割り当てられるクラスはA~Cの3つだけです。 172.25.0.0はクラスBアドレスでIホストアドレス長は16ビット(/16)となり、IPアドレス数は65536です。 均等に8つに分けるためサブネットマスクは255.255.224.0(/19)となります。 172.25.0.0のサブネットマスクが255.255.224.0の場合 ネットワークアドレスは第3オクテットが32の倍数で、第4オクテットが0になります。 また、ブロードキャストアドレスは第3オクテットが32の倍数から1を引いた数で、第4オクテットが255になります。 そのため、3番目のサブネットのネットワークアドレスは172.25.64.0となり、 172.25.64.1~172.25.95.254の範囲がホストアドレスとして利用できます。 よって、解答は「172.25.78.243」、「172.25.72.0」、「172.25.94.255」になります

  • ホストアドレスとサブネット数の問題

    IP 202.32.10.206/25 から クラスC サブネットマスク 255 255 255 128 ネットワークアドレス 202 32 10 128 と求めたのですが (1) ホストアドレスを答えろという問題と (2)サブネットマスクの設定においてサブネット数の最大値を求めよ  その時のゼロサブネットを除いて最初に使用することができるサブネットアドレスを求めよ という問題がわかりません 教えて下さい

  • 使用可能なホストアドレス数

    日に何度も質問して申し訳ありません。 この問題の解答は流石に誤植ではないのかと疑って仕方ないのですが、いかがでしょうか。 【問題】 21.115.77.0ネットワークを/28マスクを使用してサブネット化した場合の使用可能な サブネットワーク数、及びサブネット当りで使用可能なホストアドレス数はいくつですか? A 2ネットワーク、62ホスト B 6ネットワーク、30ホスト C 16ネットワーク、16ホスト D 62ネットワーク、2ホスト E 14ネットワーク、14ホスト 【解答】 C 今まで、ホスト数の計算をするためには、32-28=4で、2x2x2x2=16-2(ネットワークアドレス及びブロードキャスト)で 使用可能ホスト数は14という計算をしてきました。 が、今回の解答では16ホストという解答になっています。 また、次の設問で、201.145.32.0ネットワークを/26マスクを…以下同文の問題では、 解答が4ネットワーク、62ホストとなっています。 どちらが正しい解答なのでしょうか? 何卒宜しくお願い致します。

  • ブロードキャストアドレス

    はじめまして、ネットワークアドレスが26bitで、IPアドレスが192.168.10.68の場合、 サブネットマスクは255.255.255.0 ネットワークアドレスはIPアドレスとサブネットマスクの2進数の論理積で192.168.10.64 そして、ブロードキャストアドレスは 192.168.10.63 となりました これは正解なのかどうなのか、不安なので解説を入れて答えを教えていただければ幸いです。お願いします。

  • IPアドレスの範囲の求め方

    あるネットワークマスクが接続されているルータのポートのアドレスが、190.70.15.1であるとき、そのネットワークにおいて、使用してもよいIPアドレスの範囲を答えろ。 ただ、サブネットマスクは、255.255.255.192とする。 考え方としては、10進数を2進数に直す。 ネットワーク10111110.10001100.00001111.00000001 サブネット11111111.11111111.11111111.11000000 これの式の求め方と詳しい考え方を教えてもらいたいです。

  • IPアドレスについて

    IPアドレスについてですが、IPアドレスが220,99,66,10,で、サブネットマスクが/29の場合、ネットワークアドレスとブロードキャストアドレスの求めかたを忘れてしまったのでどなたか教えてください。10を二進数に直すと00010001です。お願いします。

  • サブネットマスクの拡張について

    いつもお世話になっております。 度々申しわけないですが教えてください。 現在使用している10.167.10.0/24で使用できるIPアドレスの数が足りなくなった場合、 サブネットマスクの拡張を行うことで使用可能なIPアドレスを増やすことができます。 サブネットマスクを24bitから22bitに変更すると、3オクテットの後ろから2bitを使うことになります。 その場合使用できるネットワークの数は以下の通りになると思います。 3オクテットの後ろから2bit借りるため 000000|00・・・ネットワーク1つ 000000|01・・・ネットワーク1つ 000000|10・・・ネットワーク1つ 000000|11・・・ネットワーク1つ 合計4つのネットワークを使用可能になります。 その場合、割り当てるIPアドレスは10.167.10.0/22(範囲:10.167.10.0~10.167.13.255) と考えていますが正しいでしょうか? ※2bit借りているのでそれを10進数であらわすと0,1,2,3となりますがこれをIPアドレスに割り当てるわけではないですよね? 例:10.167.0.0/22(範囲:10.167.0.0~10.167.3.255) 今回の場合は、あくまでもサブネットマスクは使用できるネットワーク数を求めるだけと認識しているのですが正しいでしょうか? 私の認識が正しければ下記のネットワークも作れると思っています。 例:10.167.0.0/24   10.167.1.0/24   10.167.2.0/22   10.167.6.0/23   10.167.8.0/24   10.167.9.0/24   10.167.10.0/24   10.167.11.0/24      10.167.8.0/24を拡張する場合は→10.167.8.0/23(範囲:10.167.8.0~10.167.9.255) 10.167.10.0/24を拡張する場合は→10.167.10.0/23(範囲:10.167.10.0~10.167.11.255)

  • 「IPアドレス」「IPネットワークアドレス」の違い

    PHPで書かれた「アクセス解析」コードを見ているのですが、IPアドレス部分に関して内容が理解できせん。何をしようとしている(と予想できる)か、教えて下さい ■前提 ・IPアドレスの一番下の桁を0にして保存しています ・「123.45.678.93」→「123.45.678.0」 ・「220.30.220.912」→「220.30.220.0」 ■質問1 ・ホスト部を0にしているので、「IPネットワークアドレス」を保存している、という理解で合っているでしょうか? ・算出方法。ビット(「IPアドレス」✕「サブネットマスク」) … long2ip( ip2long( $_addr ) & ip2long( $_mask ) ); ■質問2 ・またこの際、算出結果が、'0.0.0.0'だったら空を返す、という条件が入っているのですが、ビット(「IPアドレス」✕「サブネットマスク」) は、'0.0.0.0'になったりするのでしょうか? ■質問3 ・IPネットワークアドレス自体、よく分からないのですが、例えば、「192.168.1.0」=「192.168.1.XXX ネットワークそのもの」、と言う理解で合っているでしょうか? ・つまり、アクセス解析時に、「192.168.1.0」を登録することは、「192.168.1.1」「192.168.1.2」も全て同じアクセスとみなす、ということを意味するのでしょうか? ■質問4 ・「IPアドレス」と、「IPネットワークアドレス」って、何が違うのでしょうか? ・例えば、同じ「192.168.1.2」でも、所属する「IPネットワークアドレス」によって、異なる対象を指す、ということなのでしょうか? ・それは、「サブネットマスク」を見なければ分からない、ということなのでしょうか? ・もし、そうだとすると、所属が違うだけで、同じ「IPアドレス」はたくさん存在するのでしょうか?

  • クラスBのネットワークをサブネットに分けると

    163.136.0.0のクラスBネットワークを、サブネットに分けるとする。 サブネット長が20~29までのそれぞれで、利用できるサブネットの最初の4つを示してください。そのサブネットのブロードキャストアドレス、ホストに割り当てることが出来るIPアドレスもあわせて示してください。 サブネット長ごとに以下の表を完成させなさい サブネット長 29 ネットマスク10進数:255.255.255.248 ネットマスク16進数:fffffff8 最大ホスト数: ネットワークアドレス ホストIPアドレス範囲 ブロードキャストアドレス 163.136.?.?      163.136.?.?~163.136.?.? 163.136.?.? とあるのですがいまいち良く理解できませんでした。 CIDR表記は分かっているつもりなんですが解けません どうやってとけばいいのか教えてくださると助かりますm(_)m ネットマスクの10進数と16進数のところは自力でやってみたので間違っているかもしれませんが・・・