実行順序の制御

10進2進変換の誤差
九州大学経済学部
10進数を2進数に変換できますか
10進 2進
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8 1000
9 1001
:
2 ) 13
2) 6
2) 3
2) 1
0
0.375
...
...
...
...
1
0
1
1
10進数 13 は
2進数では 1101
×
×
×
2
0.75
2
1.5
2
1.0
10進数 0.375 は
2進数では 0.011
コンピュータ内は0と1の世界
数を0と1で表す → 2進数
10進数 13 は2進数 1101
n進数mを m(n) で表す
2進10進変換
1101(2) = 1×23 + 1×22 + 0×21 + 1×20
= 8 + 4 + 0 + 1 = 13(10)
一般に
…a2a1a0(2)
= … + a2×22 + a1×21 + a0×20(10)
整数の10進2進変換
…a2a1a0(2)
= … + a2×22 + a1×21 + a0×20(10)
= 2×(… + a2×21 + a1×20) + a0
= 2×(2×(… + a2×20 ) + a1) + a0
=…
= 2×(2×(2×(…)+ a2) + a1) + a0
13(10) = 2×6 + 1
= 2×(2×3 + 0) + 1
= 2×(2×(2×1 + 1) + 0) + 1
= 1101(2)
商を2で割った余りを求める
小数の10進2進変換
0.b1b2b3 …(2)
= b1×2-1 + b2×2-2 + b3×2-3 + …(10)
= 2-1×(b1 + (b2×2-1 + b3×2-2 + …))
= 2-1×(b1 + 2-1×(b2 + (b3×2-1+ …)))
=…
= 2-1×(b1 + 2-1×(b2 + 2-1×(b3 + …)))
0.375(10)
= 2-1×(0 + 0.75)
= 2-1×(0 + 2-1×(1 + 0.5))
= 2-1×(0 + 2-1×(1 + 2-1×(1 + 0.0)))
= 0.011(2)
小数部を2倍した結果の整数部を求める
10進2進変換による誤差
0.7(10)
(1.4, 0.8, 1.6, 1.2, 0.4, 0.8, 1.6,…)
= 0.1011001…(2)
= 0.1(0110) :括弧内の繰り返し
無限小数
コンピュータ内では有限桁で打ち切り
→ 誤差