ある数が与えられたとして,それを n進数表現に変換するには, どうしたら良いでしょうか? m桁のn進数 「Am-1Am-2 … A1A0(n)」は, 次のような意味を持ちます.
Am-1Am-2 … A1A0(n) = Am-1nm-1 + Am-2nm-2 + … + A1n + A0
したがって, 与えられた数をnで割った際の余り(剰余)を繰り返し求めることによって, 次のようにn進数表現が(下位から上位へと)求められます.
(Am-1nm-1+…+A1×n+A0)÷n = (Am-1nm-2+…+A1) … A0
(Am-1nm-2+…+A1)÷n= (Am-1nm-3+…+A2) … A1
(Am-1n+Am-2)÷n = Am-1… Am-2
(Am-1)÷n = 0 … Am-1
たとえば,25(10) の 2進数表現は,
25 ÷ 2 = 12 … 1
12 ÷ 2 = 6 … 0
6 ÷ 2 = 3 … 0
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1
という計算から, 25(10) = 11001(2) であることが分かります. また,25(10) の 8進数表現は,
25 ÷ 8 = 3 … 1
3 ÷ 8 = 0 … 3
ですから,25(10) = 31(8) となります.
また一般に10進の小数は,有限桁の2進数として表現できません. たとえば,10進数の「0.2(10)」を2進数で表現しようとすると,
0.2(10) = 2-3 + 2-4 + 2-7 + 2-8 + … = 0.00110011…(2)
というように循環小数となってしまいます. これは10進数で「1/3」や「1/7」が循環小数になるのと同様です.
19.1.2 n進数の意味 | 19.1.3 n進数表現の変換 | 19.1.4 2進数・8(16)進数変換 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Sat, 01 May 2004 03:43:09 JST (1917d) |