• ベストアンサー

IPアドレスを十進数から二進数に直す計算式

こんにちは。初級シスアドの勉強を最近始めた者です。 2進数を10進数に変換する方法はわかったのですが、10進数から2進数に変換する計算の仕方がわかりません。 例えば 200.170.70.16→ 11001000 10101010 01000110 00010000 どうしてこのようになるのか教えてください。 数学がまるでダメなもので苦労してます。。。 よろしくお願いいたします!

質問者が選んだベストアンサー

  • ベストアンサー
noname#6715
noname#6715
回答No.1

200をどんどん2で割っていってみましょう 200/2=100・・・0 100/2=50・・・・0 50/2=25・・・・0 25/2=12・・・・1 12/2=6・・・・0 6/2=3・・・・0 3/2=1・・・・0 1/2=0・・・・1 下から並べます 10001000 (200=2^7*1+2^6*0+2^5*0+2^4*0+2^3*1+2^2*0+2^1*0+2^0*0だから) まったく同じです 170 170/2=85・・0 85/2=42・・・1 42/2=21・・・0 21/2=10・・・1 10/2=5・・・0 5/2=2・・・・1 2/2=1・・・・0 1/2=0・・・・1 よって 10101010 同じように繰り返してください 情報処理技術者試験は受けたことないのでわかりませんが 出ないと思うけど 3進数とかに直す場合は2で割っているのを 3で割るのに変えればOK

noname#6168
質問者

お礼

すごい・・!できました~~~~~! ものすごくわかりやすいです。 2で割ってその余りが「0」か「1」かを求めるのですね。それを下から並べる。。。感動。 himajin2003さんありがとうございます!!

その他の回答 (2)

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.3

別のやり方を書いときます。 2進数の場合、桁があがると倍になります。 つまり1,2,4,8,16,32,64,128,....の桁があります。 とりあえず、並べて書いてみます 1 2 4 8 16 32 64 128 256 IPの場合1つの数字は8bit=255なので256の桁は要りません。変換するために逆に書いてみます。 128 64 32 16 8 4 2 1 この状態で、 0000 0000 (見やすいように4桁で区切ってあります) 200を2進数に変換する場合200≧128なので、128の桁を1にします 1000 0000 200から128を引きます 200-128=72 次に64の桁を見ます72≧64なので同様に64の桁を1にします。 1100 0000 72から64を引きます 72-64=8 次に32の桁を見ます32<8なので0のままです。 1100 0000 次に16の桁を見ます16<8なので0のままです。 1100 0000 次に8の桁を見ます16≧8なので8の桁に1を立てます。 1100 1000 8-8=0 残りは0なので 4<0 2<0 1<0 で0のままです。 結果 200(d) = 11001000(b) d=10進数 b=2進数 となります

noname#6168
質問者

お礼

mi-siさんありがとうございます! いろんな方法があるものなんですね~。。。 それから200(d) = 11001000(b) d=10進数 b=2進数 という書き方初めて見ました。こうして表記するんですね。ああ、本当に勉強になります^^

  • mythism
  • ベストアンサー率52% (45/86)
回答No.2

2進数から10進数への変換はできるということなので,2進数とは何かの説明については省きますね. 1番簡単な方法は,2のx乗で割ったときのあまりをチェックする方法です. xを1から順に増やして行き,あまりが出た場合には下x桁目が0となります. また,あまりが出た場合にはそのあまりを元の数から引いて,更にチェックを続けて生きます. 最終的にはチェックする数が0になった時点で終了となります. 例えば,70の場合には, a. 70 ÷(2の1乗:2)= 35 あまり 0 : 下1桁目は0. b. 70 ÷ (2の2乗:4)= 16 あまり 2 : 下2桁目は1.   あまりが出たので次にチェックする数は70-2=68. c. 68 ÷(2の3乗:8)= 8 あまり 4 :下3桁目は1.   あまりがでたので,68-4 = 64. d. 64 ÷ (2の4乗:16)= 4 あまり 0 :下4桁目は0. e. 64 ÷ (2の5条:32)= 2 あまり 0 :下5桁目は0. f. 64 ÷ (2の6条:64)= 1 あまり 0 :下6桁目は0. f. 64 ÷ (2の7条:128)= 0 あまり 64 :下7桁目は1.   あまりがでたので,64-64 = 0.   これで終了. 従って,答えは70(10進数)=1000110となります.

noname#6168
質問者

お礼

mythismさんありがとうございます! 教科書に書いてた方法とよく似てて、教科書だと理解できなかったのに今回はバッチリわかりました^^ 丁寧な説明、本当に感謝です。

関連するQ&A