2進数から10進数への変換は簡単である.式(
16)を理解して
いれば,分かる.2進数であろうが10進数であろうが,表記法は同じで,約束に従って変
形すれば良い.次のようにする.
この手中を順を追って説明すると,以下のようになる.
- まずは,1行目右辺のように位取り記数法で表現する.
- そうして,表1に従い,式を変換したい基数に直す.
- 後は地道に計算するだけ.
通常は,1行目の右辺は省き,2行目から計算する.
- 2進数の各桁の10進数での値(重み)を覚えておくと便利である.
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096
今度は逆で10進数から2進数への変換である.原理的に,先ほどと同じように変換ができ
るが,計算してみるとそれは難しい
3.これ
は,我々は10進数の演算になれていることが原因となっている.自然には,10進数であろ
うと2進数であろうと優位性は無いからである.
10進数から2進数への計算手法は簡単であるが,その内容を理解することが大事である.
計算手法を忘れても,内容が理解できていれば,その方法はいつでも自分で作ることがで
きる.また,応用範囲も広がる.では,簡単な例で説明する.10進数の
を2進
数に変換する方法を示す.具体的には,19を
![$\displaystyle (19)_{10}=(\cdots+a_4\times 2^4+a_3\times 2^3+a_2\times 2^2+a_1\times 2^1+ a_0\times 2^0)_{10}$](img21.png) |
(3) |
と表現したい.これは式(
2)の2行目の式で,ここで求められ
た係数を
![$ (\cdots a_4 a_3 a_2 a_1 a_0)_2$](img22.png)
と並べれば位取り記数法になる.それぞれ,
![$ a_n$](img23.png)
を求めなくてはならない.そこで,次のように19を2で割った商と余りを考える.これは,
![$\displaystyle (9\times2+1)_{10} =(\cdots+a_4\times 2^3+a_3\times 2^2+a_2\times 2^1+a_1\times 2^0)_{10} \times 2+a_0$](img24.png) |
(4) |
と書ける.これをよくにらむと,
![$ a_0=1$](img25.png)
ということが分かる.すなわち,
![$ a_0$](img26.png)
は19を2で
割ったあまりである.残りの部分は,
![$\displaystyle (9)_{10} =(\cdots+a_4\times 2^3+a_3\times 2^2+a_2\times 2^1+a_1\times 2^0)_{10}$](img27.png) |
(5) |
となることも分かるでろう.商について同じことをすると,
![$\displaystyle (4\times 2+1)_{10} =(\cdots+a_5\times 2^3+a_4\times 2^2+a_3\times 2^1+a_2\times 2^0)_{10} \times 2+a_1$](img28.png) |
(6) |
となる.したがって,
![$ a_1=1$](img29.png)
である.しつこいが,さらに商について同様に進めると,
となる.最後の式から,
![$ a_n=0\quad(5\leq n)$](img42.png)
が分かる.以上をまとめると
となる.要するに,2で割ったあまりを書いていけば良いのである.計算方法は分かった.
だがこの方法は実際的ではない.よく使われるのは,図
2の
ように2で割った余りを並べる.これは,
![$ (19)_{10}=(10011)_2,\quad(2003)_{10}=(11111010011)_2$](img47.png)
を示している.
内容を十分理解し,変換の練習をしなくてはならない.
2進数の変換が理解できたら,16進数の変換はまったくもって簡単である.
2進数と同じで次のようにする.
これも2進数と同様に考える.16で割ったあまりを並べれば良い.図
3のようにして,
![$ (25391)_{10}=(632F)_{16}$](img56.png)
を計算する.
手計算ではこの方法を用いるが,実際のエンジニアーは電卓の変換機能を使う.
|
コーヒーブレイク
昔から言われるジョークをひとつ.プログラマーは,クリスマス(12月25日)と
ハロウィーン(10月31日)が区別できない.なぜか?.ヒント
- 10進数(decimal number)のことをDECと書く.DEC 23 と書けば,10進数
の23をあらわしている.
- 8進数(octal number)はのことをOCTとかく.OCT 23 と書けば,8進数
の23を表している.
|
2進数と16進数の相互の変換は簡単である.
![$ 2^4=16$](img58.png)
なので,2進数の4桁は16進数の一桁
に対応している.図
4のように,1桁の16進数を4桁の2進数に変換す
れば良い.反対に4桁の2進数は,1桁の16進数に変換できる.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年6月24日