2進数から10進数への変換は簡単である.式(
1)を理解して
いれば,分かる.2進数であろうが10進数であろうが,表記法は同じで,約束に従って変
形すれば良い.次のようにする.
順を追って説明すると,以下のようになる.
-4pt
- まずは,1行目右辺のように位取り記数法で表現する.
- そうして,表1に従い,式を変換したい基数に直す.
- 後は地道に計算するだけ.
通常は,1行目の右辺は省き,2行目から計算する.
-4pt
- 2進数の各桁の10進数での値(重み)を覚えておくと便利である.
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096
今度は逆で10進数から2進数への変換である.原理的に,先ほどと同じように変換ができ
るが,計算してみるとそれは難しい
2.これ
は,我々は10進数の演算になれていることが原因となっている.自然では,10進数であろ
うと2進数であろうと優位性は無い.
10進数から2進数へ変換する計算は簡単であるが,その内容を理解することが大事である.
計算手法を忘れても,内容が理解できていれば,その方法はいつでも自分で作ることがで
きる.また,応用範囲も広がる.では,簡単な例で説明する.10進数の
を2進
数に変換する方法を示す.具体的には,19を
 |
(3) |
と表現したい.これは式(
2)の2行目の式で,ここで求められ
た係数を

と並べれば位取り記数法になる.それぞれ,

を求めなくてはならない.そこで,次のように19を2で割った商と余りを考える.これは,
 |
(4) |
と書ける.これをよくにらむと,

ということが分かる.すなわち,

は19を2で
割ったあまりである.残りの部分は,
 |
(5) |
となることも分かるでろう.商について同じことをすると,
 |
(6) |
となる.したがって,

である.しつこいが,さらに商について同様に進めると,
となる.最後の式から,

が分かる.以上をまとめると
となる.要するに,2で割ったあまりを書いていけば良いのである.計算方法は分かった.
だがこの方法は実際的ではない.よく使われるのは,図
2の
ように2で割った余りを並べる.これは,

を示している.
内容を十分理解し,変換の練習をしなくてはならない.
2進数の変換が理解できたら,16進数の変換はまったくもって簡単である.
2進数と同じで次のようにする.
これも2進数と同様に考える.16で割ったあまりを並べれば良い.図
3のようにして,

を計算する.
手計算ではこの方法を用いるが,実際のエンジニアーは電卓の変換機能を使う.
|
コーヒーブレイク
昔から言われるジョークをひとつ.プログラマーは,クリスマス(12月25日)と
ハロウィーン(10月31日)が区別できない.なぜか?.ヒント
-4pt
- 10進数(decimal number)のことをDECと書く.DEC 23 と書けば,10進数
の23をあらわしている.
- 8進数(octal number)はのことをOCTとかく.OCT 23 と書けば,8進数
の23を表している.
|
2進数と16進数の相互の変換は簡単である.

なので,2進数の4桁は16進数の一桁
に対応している.図
4のように,1桁の16進数を4桁の2進数に変換す
れば良い.反対に4桁の2進数は,1桁の16進数に変換できる.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年2月8日