初級シスアド講座 10進数と2進数の相互変換

■初級シスアド講座 10進数と2進数の相互変換■
初級シスアドでは、問題として10進数を2進数に変換したり、2進数を10進数に変換したりする問題は出題されていない。しかし、TCP/IPネットワークの問題において、IPアドレスとサブネットマスクを使って、ネットワーク・アドレスやホスト・アドレスを求めるために必要な知識である。

基数変換の詳細は基本情報技術者講座で解説しているので参考にして欲しい。

1.10進数 → 2進数
  10進数を2進数に変換するには、変換したい10進数を商が0になるまで2で割りつづけ商と余りを求めればよい。

  10進数の60は、2進数では111100である。8ビットで表現するときは、足りないけた数分、上位のけたに0を補充する。

                  

10進数の小数を2進数に変換する方法は基本情報技術者講座で解説しています。

2.2進数 → 10進数
  2進数から10進数に変換するには、2進数の各けたの重みをかけたものの合計を求める。

                

  よく使われる数値は覚えておくと便利である。

 

2進数 10進数

11111111
10000000

255
128


3.マイナスの数値の10進数 → 2進数
 前述した内容はプラスの10進数を2進数に変換する方法である。ここでは、マイナスの数値の10進数を2進数に変換する方法を解説する。2進数のマイナスの数値の表現方法はいくつかあるが、ここでは2の補数を使った表現方法を解説する。手順はつぎのとおりである。
    

1.10進数を2進数に変換する
 変換したい10進数を符号を考慮せずに2進数に変換する
     

2.表現するビット数で表現する
 10進数の60は、2進数では111100である。8ビットで表現するときは、足りないけた数分、上位のけたに0を補充する
    

3.2の補数を求める
 2進数の2の補数を求める。この2の補数表現された2進数が10進数−60の2進数表現である。2の補数は各ビットの1と0を反転したものに+1したものだ。なお、各ビットの1と0を反転させたものを1の補数という。つまり、2の補数は、1の補数+1である。
             

 

 求まった1の補数に+1する。(2の補数)最上位のけた上がりが発生したときは無視する。
 

スポンサードリンク

4.マイナスの数値の2進数 → 10進数
 マイナスの2進数とプラスの2進数では当然変換方法が違う。マイナスの10進数を2進数に変換した結果を見ると分かるように10進数のようにマイナスの符号(−)があるわけでもない。では、どうやってプラスの2進数とマイナスの2進数を見分ければよいのだろうか。これは、最上位のビット(一番左端のビット)に注目すればよい。最上位のビットが1ならばマイナスの2進数であり、0であればプラスの2進数である。
    

 最上位のビッドが0のプラスの2進数は、前述した10進数から2進数の変換方法で10進数に変換すればよい。最上位のビットが1のときは、その2進数の2の補数を求め、その値を10進数に変換したものがその数値の値だ。もちろんその10進数にマイナスの符号(−)を付けることを忘れてはいけない。
 

 最上位のビットに注目する。最上位のビットが1であるから、この2進数は負の数であることが分かる。負の数の2進数はそのまま10進数に変換してはいけない。2の補数を求めて、その2進数を10進数に変換しなければいけない。
   

1.2の補数を求める
 

 求まった1の補数に+1する。(2の補数)最上位のけた上がりが発生したときは無視する。
 

2.10進数に変換する
 

 1 ×2+1 ×2+1 ×2+1 ×2
=2+2+2+2
=32+16+8+4
=60
である。マイナスの符号を付けて、−60である。2進数11000100は10進数では、−60である。

まとめ
 マイナスを考慮しなくてはいけないときの2進数から10進数の変換は複雑に感じるかもしれない。要は、最上位のビットに注目し、0ならばその2進数を10進数に変換すればよい。1ならば、その2進数の2の補数を求めその値を10進数に変換する。まとめるとつぎのようになる。
 

初級シスアド講座

初級シスアド 分野別過去問題 初級シスアド 過去問題

SQL講座

ITパスポート試験情報

 Copyright (C) 2002 Pursue Inc., All Rights Reserved