- ベストアンサー
IPアドレスを十進数から二進数に直す計算式
こんにちは。初級シスアドの勉強を最近始めた者です。 2進数を10進数に変換する方法はわかったのですが、10進数から2進数に変換する計算の仕方がわかりません。 例えば 200.170.70.16→ 11001000 10101010 01000110 00010000 どうしてこのようになるのか教えてください。 数学がまるでダメなもので苦労してます。。。 よろしくお願いいたします!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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
その他の回答 (2)
- mi-si
- ベストアンサー率35% (200/567)
別のやり方を書いときます。 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進数 となります
お礼
mi-siさんありがとうございます! いろんな方法があるものなんですね~。。。 それから200(d) = 11001000(b) d=10進数 b=2進数 という書き方初めて見ました。こうして表記するんですね。ああ、本当に勉強になります^^
- mythism
- ベストアンサー率52% (45/86)
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となります.
お礼
mythismさんありがとうございます! 教科書に書いてた方法とよく似てて、教科書だと理解できなかったのに今回はバッチリわかりました^^ 丁寧な説明、本当に感謝です。
お礼
すごい・・!できました~~~~~! ものすごくわかりやすいです。 2で割ってその余りが「0」か「1」かを求めるのですね。それを下から並べる。。。感動。 himajin2003さんありがとうございます!!