2進数から10進数への変換は簡単である。式(
1)を理解して
いれば、分かる。2進数であろうが10進数であろうが、表記法は同じで、約束に従って変
形すれば良い。次のようにする。
この手中を順を追って説明すると、以下のようになる。
- まずは、1行目右辺のように位取り記数法で表現する。
- そうして、表1に従い、式を変換したい基数に直す。
- 後は地道に計算するだけ。
通常は、1行目の右辺は省き、2行目から計算する。
- 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を
![$\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}$](img12.png) |
(3) |
と表現したい。これは式(
2)の2行目の式で、ここで求められ
た係数を
![$ (\cdots a_4 a_3 a_2 a_1 a_0)_2$](img13.png)
と並べれば位取り記数法になる。それぞれ、
![$ a_n$](img14.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$](img15.png) |
(4) |
と書ける。これをよくにらむと、
![$ a_0=1$](img16.png)
ということが分かる。すなわち、
![$ a_0$](img17.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}$](img18.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$](img19.png) |
(6) |
となる。したがって、
![$ a_1=1$](img20.png)
である。しつこいが、さらに商について同様に進めると、
となる。最後の式から、
![$ a_n=0\quad(5\leq n)$](img31.png)
が分かる。以上をまとめると
となる。要するに、2で割ったあまりを書いていけば良いのである。計算方法は分かった。
だがこの方法は実際的ではない。よく使われるのは、図
2の
ように2で割った余りを並べる。これは、
![$ (19)_{10}=(10011)_2,\quad(2003)_{10}=(11111010011)_2$](img35.png)
を示している。
内容を十分理解し、変換の練習をしなくてはならない。
2進数の変換が理解できたら、16進数の変換はまったくもって簡単である。
2進数と同じで次のようにする。
これも2進数と同様に考える。16で割ったあまりを並べれば良い。図
3のようにして、
![$ (25391)_{10}=(632F)_{16}$](img42.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$](img44.png)
なので、2進数の4桁は16進数の一桁
に対応している。図
4のように、1桁の16進数を4桁の2進数に変換す
れば良い。反対に4桁の2進数は、1桁の16進数に変換できる。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成17年6月6日