ｎ進法

ｎ進法（１）
日常生活で使われているのは10進法である．10進法は，各桁を0, 1, 2, ..., 9 とカウントアップし，その桁が10になる直前に上位の桁をカウントアップし，自桁を 0 にリセットする数え方である．
0102011121212223132345678914 15 16 17 18 1924 25 26 27 28 29・・・90 91 92 93 94 95 96 97 98 99
100 101 102 103 104 105 106 107 108 109
110 111 112 113 114 115 116 117 118 119

九州大学工学部電気情報工学科（2006年度）

ｎ進法（２）ｎ進法は，各桁を 0, 1, 2, ..., n–1 とカウントアップし，その桁が nになる直前に上位の桁をカウントアップし，自桁を 0 にリセットする数え方である．（nを基数と呼ぶ．）
例: 4進法0123200 201 202 203
10 11 12 13210 211 212 213
20 21 22 23
220 221 222 223
30 31 32 33
230 231 232 233
100 101 102 103
300 301 302 303
110 111 112 113
310 311 312 313
120 121 122 123
320 321 322 323
130 131 132 133
330 331 332 3331000

九州大学工学部電気情報工学科（2006年度）

ｎ進法（３）
アラビア数字は0から 9 までの10種類しかなく，11進法以上では文字が不足するので，代わりに A, B, C, ... のアルファベットを使用して数える．
01020

1
11212
122290A091
A192
A2F0F1F2

例: 16進法
3 …
913 … 19
23 … 29・・・
93 … 99
A3 … A9・・・
F3 … F9A
1A2A

B
1B
2B…
…
…

F1F2F

9AAA

9B
AB…
…

9F
AF

FA

FB…

FF

九州大学工学部電気情報工学科（2006年度）

ｎ進法から10進法への変換① 365.25(10) = 3 * 102 + 6 * 101 + 5 * 100 + 2 * 10-1 + 5 * 10-2
= 365.25(10)② 101.01(2) = 1 * 22 + 0 * 21 + 1 * 20 + 0 * 2-1 + 1 * 2-2= 5.25(10)③ 125.34(8) = 1 * 82 + 2 * 81 + 5 * 80 + 3 * 8-1 + 4 * 8-2= 85.4375(10)④ 2AD.C(16) = 2 * 162 + A * 161 + D * 160 + C * 16-1
= 2 * 162 + 10 * 161 + 13 * 160 + 12 * 16-1= 685.75(10)九州大学工学部電気情報工学科（2006年度）

10進法からｎ進法への変換（１）整数部の変換: 商が 0 になるまで n で割り続け，得られた余りを逆順に並べる．
①85(10)②685(10)85 ÷ 8 = 10 ... 510 ÷ 8 = 1 ... 21 ÷ 8 = 0 ... 1（答） 125(8)685 ÷ 16 = 42 ... 13 つまり D42 ÷ 16 = 2 ... 10 つまり A2 ÷ 16 = 0 ... 2（答） 2AD(16)応用問題①: なぜ上記の計算で基数の変換が正しくできるのか証明を示せ．
九州大学工学部電気情報工学科（2006年度）

10進法からｎ進法への変換（２）小数部の変換: 小数部が 0 になるまで，小数部に n を掛け続ける．得られた積の整数部を順に並べる．
① 0.578125(10)0.578125 * 8 = 4.625
0.625 * 8 = 5.0（答） 0.45(8)② 0.7890625(10)0.7890625 * 16 = 12.625
0.625 * 16 = 10.012つまりC，10つまりA（答） 0.CA(16)

応用問題②: なぜ上記の計算で基数の変換が正しくできるのか証明を示せ．
九州大学工学部電気情報工学科（2006年度）

10進法からｎ進法への変換（３）常に有限小数に基数変換できる保証はない．（無限小数になることもある．）
0.1(10)0.1 * 2 = 0.2
0.2 * 2 = 0.4
0.4 * 2 = 0.8
0.8 * 2 = 1.6
0.6 * 2 = 1.2
0.2 * 2 = 0.4…
（答） 0.0001 1001 1001 1001…(2)

応用問題③: 上記の無限2進小数が0.1(10)を表していることを証明せよ．
九州大学工学部電気情報工学科（2006年度）

10進法からｎ進法への変換（４）685.7890625(10)685

0.7890625

685 ÷ 160.7890625 * 16= 42 ... 13 つまり D

42 ÷ 16= 12.625
0.625 * 16

= 2 ... 10 つまり A2 ÷ 16= 10.012つまりC，10つまりA= 0 ... 22AD.CA
2AD.CA(16)
九州大学工学部電気情報工学科（2006年度）

２進法
z 今日のコンピュータはあらゆるデータを２進法で表現し，１と０をそれぞれ電圧の有無に対応させ，データの加工と記憶を電子回路によって行う．
z ２進法における１桁をビット（bit = binary digit）という．一般に８ビットを１バイトという．
z ２進法でも「メートル法」を用いる．１０進法では1000がキロ（Ｋ），10002がメガ（M），10003がギガ（Ｇ）になるが，1000 は2進法
では切りが悪い数字である．代わりに 1024 （= 210）をキロ（Ｋ），10242をメガ（Ｍ） ，10243をギガ（G）とする．
z ２進数は書くと長くなる（255を表すのに8桁も必要！）ため，プ
ログラムでは２進数からの変換が容易な１６進数や８進数が使用される．今日は１６進数での記述が主流．
九州大学工学部電気情報工学科（2006年度）

１６進法と８進法
z ２進数の４ビット（3ビット） は１６進数（８進数）の１桁に相当する．
２進法

８進法

１６進法

２進法

８進法

１６進法

000

1 000

108

1

1

1

1 001

1191022

1 010

12A

113

3

1 011

13B

100

44

1 100

14C10155

1 101

15D11066

1 110

16E111

77

1 111

17F

z ２進数を１６進数（８進数）に直すには４ビット（３ビット）ごとに変換するとよい．例えば，1010 1011(2) は AB(16)．
z １６進数（８進数）を２進数に直すには１桁を４ビット（３ビット）に変換する．例えば，273(8) は 10 111 011(2)．
九州大学工学部電気情報工学科（2006年度）

応用問題①解答例
任意の非負整数 a を任意の2以上の整数 n で整除したときの商を p0，余りを q0 とする．
また，pi（i ≥ 0）を n で整除したときの商を pi+1，余りを qi+1 とする．明らかに 0 ≤ qi < n （i≥ 0）．
任意の i について，pi ≥ 0 である．また，pi ≠ 0 ならば pi > pi+1，pi = 0 ならば pi+1 = 0 である．ゆえに，任意の i < m について pi > 0 とし，かつ任意の i ≥ m について pi = 0 とするような非負整数 m が存在する．
a = np0 + q0，pi = npi+1 + qi+1（i ≥ 0）であるから，p0 から順次 pi を置換していくと，下式の通りとなる．この式より，整数 a が n 進法では，qmqm–1…q0 と表現されることがわかる．

a = np0 + q0
= n(np1 + q1 ) + q0
=L
= n(n(L (n( npm + qm ) + qm −1 ) L) + q0
= n m q m + n m −1qm −1 + L + nq1 + q0
九州大学工学部電気情報工学科（2006年度）

応用問題②解答例
0以上1未満の実数 a を任意の2以上の整数 n で乗じたときの積の整数部を q1，小数部を p1 とする．また，pi（i ≥ 1）を n で乗じたときの積の整数部を qi+1，小数部を pi+1 とする．明らかに 0 ≤ qi < n（i ≥ 1）．
na = p1 + q1，npi = pi+1 + qi+1（i ≥ 1），すなわち a = p1 / n + q1 / n，pi = pi+1 / n + qi+1 / n （i ≥ 1）である．p1 から順次 pi を置換していくと，下式の通りとなる．この式より，実数 a が n 進法では，0.q1q2q3… と表現されることがわかる．
11
p1 + q1
nn
1 111= ( p2 + q2 ) + q1n nnn=La=11
1q1 + 2 q2 + 3 q3 + Lnnn= n −1q1 + n − 2 q2 + n −3 q3 + L=ある自然数 m について，pm = 0 ならば，任意の i ≥ m について pi = 0 であり，実数 a は n 進有限小数となる．但し，このような m が存在することは常には保証されず，一般的には n 進無限小数となる．
九州大学工学部電気情報工学科（2006年度）

応用問題③解答例
下記のとおり，無限2進小数の値を級数で表現し，その極限値を求めると10進数の 0.1 となっていることがわかる．
∞1 ⎞⎛ 1
0.0001100110011001L( 2 ) = ∑ ⎜ 4 k + 4 k +1 ⎟2 ⎠k =1 ⎝ 2
3 ∞ 1= ∑ 4k2 k =1 23 ∞ 1= ∑ k
2 k =1 161
1316 (1 − 16n )= lim
2 n→∞ 1 − 161
110= 0.1(10 )=九州大学工学部電気情報工学科（2006年度）