- ベストアンサー
TCP/IPの二進数と十進数
TCP/IPのIPアドレスとサブネットマスクの計算の所で二進数と十進数が出てきますが、いまいち計算方法がわかりません。 二進数から十進数、十進数から二進数に変換する方法を教えてください。 またそれについて計算方法が記載されているHPでも構いませんので 教えてください。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
(途中のスペースとか省略されてちゃんと見えるかどうか不安ですが...) 他の方も書かれていますが、2進数から10進数へは、それぞれの桁の数を 足して行けばいいのです。 たとえば、"1011"を10進数にするには 一番右から2^0(2の0乗),2^1,2^2...とならんでいるので、 2^3*1 + 2^2*0 + 2^1*1 + 2^0*1 = 8*1 + 4*0 + 2*1 + 1*1 = 8 + 0 + 2 + 1 = 11となります。 これは桁が増えても同じで、IPアドレスのような255まで表示する場合 2^7*x + 2^6*x + 2^5*x + 2^4*x + 2^3*x + 2^2*x + 2^1*x + 2^0*x = となります。 で、もし2進数で"11111111"と書いてあれば(途中省略しますが) 128*1 + 64*1 + 32*1 + 16*1 + 8*1 + 4*1 + 2*1 + 1*1 = 255 となります。 10進数から2進数にする場合は、その逆に 10進数から2^xで割っていった数の余りを書いていくと導きだせます。 例:30の場合 30 を 2で割ると 15 余り 0 15 を 2で割ると 7 余り 1 7 を 2で割ると 3 余り 1 3 を 2で割ると 1 余り 1 これを筆算になおすと(上から下へ割り算をしていく) 2) 30 余り 0 ----- 2) 15 余り 1 ----- 2) 7 余り 1 ----- 2) 3 余り 1 ----- 1 となります。 出てきた"余り"を"逆から"ならべると"1110"となって10進数の"30"は 2進数の"1110"と導きだせます。 #ということで、人は片手で31まで数えられるんですね。2進数を使えば。
その他の回答 (4)
- buchineko
- ベストアンサー率37% (22/58)
算数あるいは数学で進数をならってない世代にはつらい話ですよね。 既に色々言い尽くされているようですが、道具がなくて簡単に計算する方法を紹介しましょう。 二進数の場合、******** とあったら、一番右は「1」だと覚えておいて下さい。そして左に移るにつれて、その数が倍になっていく規則があります、 * * * * * * * * 128←倍←64←倍←32←倍←16←倍←8←倍←4←倍←2←倍←1 このように、8つ(IPアドレスの場合8Bitsなので)の数字の関係を書いておいて、*が0か1か確認します。「1」であったものだけを足すと、十進数になります。 十進数から逆に二進数にするには、やはり、上のような数字を並べて、足してその10進数の値になるような組合せをすればいいのです。
- kodai_sumio
- ベストアンサー率45% (29/64)
分かりやすいHPがありましたのでご紹介します。 計算方法なども丁寧に説明されています。
- coolguys
- ベストアンサー率18% (351/1917)
Windowsに付属している電卓を使えば簡単に出来ますよ。 編集から関数電卓を選べば使えます。 10進にチェックを入れておいて数字を入力した後で 2進にチェックを入れれば2進に変換されます。 逆も同じように出来ます。
- pythian
- ベストアンサー率32% (26/80)
手っ取り早いのは、Windowsの電卓(関数電卓)で変換ができます。 2進>10進ですと、上から順番に128,64,32,16,8,4,2,1を足せばいいので、たとえば01100000ですと0+64+32+0+0+0+0+0で96、00001101ですと0+0+0+0+8+4+0+1で13となります。 10進>2進は、上記の数列で大きいほうから引いていけばokです。たとえば73のとき、64を引いて、8を引いて、1を引けば0になりますね。ということは、0+64+0+0+0+8+0+0+1なので、010001001となります。 わからなかったら、何なりと補足質問してください。