アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。初級シスアドの勉強を最近始めた者です。
2進数を10進数に変換する方法はわかったのですが、10進数から2進数に変換する計算の仕方がわかりません。

例えば
200.170.70.16→
11001000 10101010 01000110 00010000

どうしてこのようになるのか教えてください。
数学がまるでダメなもので苦労してます。。。
よろしくお願いいたします!

A 回答 (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
    • good
    • 1
この回答へのお礼

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

himajin2003さんありがとうございます!!

お礼日時:2004/02/09 18:44

別のやり方を書いときます。



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進数
となります
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/09 18:54

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となります.
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/09 18:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!