Home標準記数法符号付き数の列正数の列負の基数

1. 零抜き十進法

1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数

非負の剰余

任意の被除数 a を正の除数 b で割ったときの整数商を q,剰余を r とすると, \[ a=bq+r \] が成り立つ。 標準的には,非負でできるだけ小さい値の剰余 r を用いる。 そのときの整数商 q は,実数の範囲で求めた商 a÷b の小数部分を切り捨てたものになる。 \[ q=\left \lfloor \frac{a}{b}\right \rfloor,\qquad 0\le r<b \] 特に,被除数 a が整数,除数 b が2以上の整数の場合の剰余 r は 0≤r≤b−1 の範囲の整数になる。

たとえば,整数 a を正の整数 b=2 で割ったときの剰余は 0,1 のいずれかになる。 正の整数 b=3 で割ったときの剰余は 0,1,2 のいずれか, 正の整数 b=10 で割ったときの剰余は 0,1,2,3,4,5,6,7,8,9 のいずれかになる。 この剰余(非負の剰余)を使って標準的なk進法の表記ができる。

最小でない正の剰余

任意の被除数 a を正の除数 b で割ったときの整数商を q,剰余を r とすると, \[ a=bq+r \] が成り立つが, 0を含めず,正でできるだけ小さい値の剰余 r を定めることもできる。 そのときの整数商は q=⌊(a−1)÷b⌋ になる。 \[ q=\left \lfloor \frac{a-1}{b}\right \rfloor,\qquad 1\le r<b+1 \] あるいは q=⌈a÷b−1⌉ でもよい。 \[ q=\left \lceil \frac{a}{b}-1\right \rceil,\qquad 0<r\le b \] 特に,被除数 a が整数,除数 b が1以上の整数の場合の剰余 r は 1≤r≤b の範囲の整数になる。

たとえば,整数 a を正の整数 b=2 で割ったときの剰余は 1,2 のいずれかになる。 正の整数 b=3 で割ったときの剰余は 1,2,3 のいずれか, 正の整数 b=10 で割ったときの剰余は 1,2,3,4,5,6,7,8,9,10 のいずれかになる。 この剰余(零を含まない正の剰余)を使って零抜きk進法の表記ができる。

十進法(Decimal)

標準的な十進法では,各々の位は 0,1,2,3,4,5,6,7,8,9 のいずれかになっている。 十進法で 6502 と表される数は,次のように分解できる。 \[ 6502_{10}=6\times 10^3+5\times 10^2+0\times 10+2 \]

零抜き十進法(Bijective Decimal)

零抜き十進法では,各々の位は 1,2,3,4,5,6,7,8,9,10 のいずれかになっている。 数 10 を文字 X で表すことにすると, 零抜き十進法で 64X2 と表される数は,次のように分解できる。 \[ \text{64X2}_{10}=6\times 10^3+4\times 10^2+10\times 10+2 \] これを十進法で計算すると,零抜き十進法の 64X2 は十進法の 6502 に等しい。

※「正数の列で表す記数法」に対して適当な名称が見当たらないため,「零抜きk進法」と名付けることにする。

使用例

零抜き十進法の表記は X=10 とする。

十進法零抜き
 11
 22
 33
 44
 55
 66
 77
 88
 99
10X
十進法零抜き
1111
1212
1313
1414
1515
1616
1717
1818
1919
201X
十進法零抜き
101X1
102X2
103X3
104X4
105X5
106X6
107X7
108X8
109X9
110XX
十進法零抜き
111111
112112
113113
114114
115115
116116
117117
118118
119119
12011X
十進法零抜き
1101XX1
1102XX2
1103XX3
1104XX4
1105XX5
1106XX6
1107XX7
1108XX8
1109XX9
1110XXX
十進法零抜き
11111111
11121112
11131113
11141114
11151115
11161116
11171117
11181118
11191119
1120111X

次のページへ

1 2 3 4 Next

2. 十進法から零抜き十進法への変換

1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数

十進法から零抜き十進法へ

十進法で 500 と表される数を零抜き十進法に変換する。 500÷10 の商は ⌊(500−1)÷10⌋ または ⌈500÷10−1⌉ によって求める。

除算
500 ÷ 104910
49 ÷ 1049
4 ÷ 1004

求めた余りを逆順に並べると,十進法の 500 は零抜き十進法で 49X になる。ただし X=10 とする。 この結果が正しいことを確かめるために,最後の行から順に展開していく(最後の行は省く)。 \begin{align*} 49 &=4\times 10+9\\ 500 &=49\times 10+10\\ &=(4\times 10+9)\times 10+10\\ &=4\times 10^2+9\times 10+10 \end{align*} したがって,十進法の 500 を三進法で表すと 49X になる。

次のページへ

1 2 3 4 Next

3. アルファベット列の二十六進法

1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数

零抜き一進法(Bijective Unary)

標準的な一進法では,すべての位が 0 になって 0 しか表せない。 零抜き一進法では,すべての位が 1 になるが,各位の和を求めることによって任意の自然数を表すことができる。 零抜き一進法で 1111 と表される数は次のように分解できる。 \[ 1111_1=1\times 1^3+1\times 1^2+1\times 1+1 \] これを十進法で計算すると,零抜き一進法の 1111 は十進法の 4 に等しい。

使用例(一進法)

十進法一進法
11
211
3111
41111
511111
6111111
71111111
811111111
9111111111

零抜き二十六進法(Bijective Hexavigesimal)

EXCEL等の表計算ソフトウェアにおいて,列番号がアルファベットで表示されることがある。 A列は第1列,B列は第2列,C列は第3列,…,Z列は第26列で,その次の列はAA列で第27列となっている。 列番号を A=1,B=2,C=3,…,Z=26 と対応付けると,このような列番号の表記は零抜き二十六進法になっている。

十進法で 256 と表される数を零抜き二十六進法に変換する。

除算
256 ÷ 26922
9 ÷ 2609

余りを逆順に並べてアルファベットに置き換えると,十進法の 256 は零抜き二十六進法で IV になる。

十進法で 16384 と表される数を零抜き二十六進法に変換する。

除算
16384 ÷ 266304
630 ÷ 26246
24 ÷ 26024

余りを逆順に並べてアルファベットに置き換えると,十進法の 16384 は零抜き二十六進法で XFD になる。

使用例(二十六進法)

十進法二十六進法
 1A
 2B
 3C
 4D
 5E
 6F
 7G
 8H
 9I
10J
11K
12L
13M
十進法二十六進法
14N
15O
16P
17Q
18R
19S
20T
21U
22V
23W
24X
25Y
26Z
十進法二十六進法
27AA
28AB
29AC
30AD
31AE
32AF
33AG
34AH
35AI
36AJ
37AK
38AL
39AM
十進法二十六進法
40AN
41AO
42AP
43AQ
44AR
45AS
46AT
47AU
48AV
49AW
50AX
51AY
52AZ
十進法二十六進法
677ZA
678ZB
679ZC
680ZD
681ZE
682ZF
683ZG
684ZH
685ZI
686ZJ
687ZK
688ZL
689ZM
十進法二十六進法
690ZN
691ZO
692ZP
693ZQ
694ZR
695ZS
696ZT
697ZU
698ZV
699ZW
700ZX
701ZY
702ZZ

次のページへ

1 2 3 4 Next

4. 正の剰余による整数

1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数

零抜きk進法

基数 k が 1 以上の整数のとき,任意の正の整数を正数 1,2,…,k の列で表す記数法のことを 零抜き k 進法 という。 正の整数 x を零抜き k 進法で表した文字列を anan−1…a0 とする。 \[ x=a_n a_{n-1}\cdots a_0 \]

※「正数の列で表す記数法」に対して適当な名称が見当たらないため,「零抜きk進法」と名付けることにする。

最小でない正の剰余

実数を整数に丸める関数を F(x) とする。 \[ F(x)=\lceil x-1\rceil \] x は任意の実数,k は正の実数とする。 被除数 x を除数 k で割ったときの整数商 q を F(x/k)=⌈x/k−1⌉ によって定めると,剰余 r は正の実数(0<r≤k)になる。 \[ q=F\left(\frac{x}{k}\right),\;x=qk+r\implies 0\lt r\le k \] 特に,x が整数で k が 1 以上の整数の場合は,r は 1≤r≤k の範囲の整数になる。 \[ x,k\in \mathbb{Z},\;q=F\left(\frac{x}{k}\right),\;x=qk+r\implies 1\le r\le k \]

零抜きk進法の決定

x,k はともに 1 以上の整数とする。 x を k で割った商を q0,剰余を a0 とする。ただし除法は上に定めたものとする。a0 は 1≤a0≤k の範囲の整数になる。 \[ q_0=F\left(\frac{x}{k}\right)\quad (q_0<x),\qquad x=q_0 k+a_0\quad (1\le a_0\le k) \] q0=0 でないとき,q0 を k で割った商を q1,剰余を a1 とする。 \[ q_1=F\left(\frac{q_0}{k}\right)\quad (q_1<q_0),\qquad q_0=q_1 k+a_1\quad (1\le a_1\le k) \] 同様にして除算を繰り返す。qi−1=0 でないとき,qi−1 を k で割った商を qi,剰余を ai とする。 \[ q_i=F\left(\frac{q_{i-1}}{k}\right)\quad (q_i<q_{i-1}),\qquad q_{i-1}=q_i k+a_i\quad (1\le a_i\le k) \] x>q0>q1>… より,ある番号 n で qn=0 になるから,その時点でとりやめる。 \[ q_n=F\left(\frac{q_{n-1}}{k}\right)=0,\qquad q_{n-1}=q_n k+a_n\quad (1\le a_n\le k) \] 除算の結果を次々に置き換えると,x を k のべきを使って表すことができる。 \begin{align*} x &=q_0 k+a_0\\ &=q_1 k^2+a_1 k+a_0\\ &\qquad \qquad \cdots \\ &=q_{i-1} k^i+a_{i-1} k^{i-1}+\cdots +a_2 k^2+a_1 k+a_0\\ &\qquad \qquad \cdots \\ &=q_{n-1} k^n+a_{n-1} k^{n-1}+\cdots +a_2 k^2+a_1 k+a_0\\ &=a_n k^n+a_{n-1} k^{n-1}+\cdots +a_2 k^2+a_1 k+a_0 \end{align*} したがって,正の整数 x を零抜き k 進法で表したときの各位は ai になる。 \[ x=a_n a_{n-1}\cdots a_2 a_1 a_0 \]

除法の許容範囲

丸め関数 F(x) は,⌊x−1/k⌋ から ⌈x−1⌉ までの範囲内のものに置き換えてもかまわない。 \[ \left \lfloor x-\frac{1}{k}\right \rfloor \le F(x)\le \left \lceil x-1\right \rceil \] なぜなら,x が整数ならば,上の範囲内の F(x) によって同一の結果が得られるからである。 \[ x\in \mathbb{Z}\implies q_0=\left \lfloor \frac{x}{k}-\frac{1}{k}\right \rfloor =\left \lceil \frac{x}{k}-1\right \rceil \]

零抜きk進法の小数

零抜きk進法で,長さの異なる小数を混在させると一意性が保てなくなる。 たとえば,標準的な十進法で 0.2 と表される数は,零抜き十進法で複数の表現ができてしまう。ただし X=10 とする。 \[ .2=.1\text{X}=.19\text{X}=\cdots \] すべての数を無限小数で表すことにすれば,零抜きk進法で小数を表現できる可能性はある。

最後のページです

1 2 3 4 Home

正数の列で表す記数法

Home標準記数法符号付き数の列正数の列負の基数

2014.11.6 作成 / 2020.3.31 更新

Home › 正数の列で表す記数法