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進法の表記ができる。
標準的な十進法では,各々の位は 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 \]
零抜き十進法では,各々の位は 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 とする。
|
|
|
次のページへ
1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数
十進法で 500 と表される数を零抜き十進法に変換する。 500÷10 の商は ⌊(500−1)÷10⌋ または ⌈500÷10−1⌉ によって求める。
除算 | 商 | 余 |
500 ÷ 10 | 49 | 10 |
---|---|---|
49 ÷ 10 | 4 | 9 |
4 ÷ 10 | 0 | 4 |
↑ |
求めた余りを逆順に並べると,十進法の 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. 正の剰余による整数
標準的な一進法では,すべての位が 0 になって 0 しか表せない。 零抜き一進法では,すべての位が 1 になるが,各位の和を求めることによって任意の自然数を表すことができる。 零抜き一進法で 1111 と表される数は次のように分解できる。 \[ 1111_1=1\times 1^3+1\times 1^2+1\times 1+1 \] これを十進法で計算すると,零抜き一進法の 1111 は十進法の 4 に等しい。
十進法 | 一進法 |
1 | 1 |
2 | 11 |
3 | 111 |
4 | 1111 |
5 | 11111 |
6 | 111111 |
7 | 1111111 |
8 | 11111111 |
9 | 111111111 |
EXCEL等の表計算ソフトウェアにおいて,列番号がアルファベットで表示されることがある。 A列は第1列,B列は第2列,C列は第3列,…,Z列は第26列で,その次の列はAA列で第27列となっている。 列番号を A=1,B=2,C=3,…,Z=26 と対応付けると,このような列番号の表記は零抜き二十六進法になっている。
十進法で 256 と表される数を零抜き二十六進法に変換する。
除算 | 商 | 余 |
256 ÷ 26 | 9 | 22 |
---|---|---|
9 ÷ 26 | 0 | 9 |
↑ |
余りを逆順に並べてアルファベットに置き換えると,十進法の 256 は零抜き二十六進法で IV になる。
十進法で 16384 と表される数を零抜き二十六進法に変換する。
除算 | 商 | 余 |
16384 ÷ 26 | 630 | 4 |
---|---|---|
630 ÷ 26 | 24 | 6 |
24 ÷ 26 | 0 | 24 |
↑ |
余りを逆順に並べてアルファベットに置き換えると,十進法の 16384 は零抜き二十六進法で XFD になる。
|
|
|
次のページへ
1. 零抜き十進法
2. 十進法から零抜き十進法への変換
3. アルファベット列の二十六進法
4. 正の剰余による整数
基数 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 \]
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進法で,長さの異なる小数を混在させると一意性が保てなくなる。 たとえば,標準的な十進法で 0.2 と表される数は,零抜き十進法で複数の表現ができてしまう。ただし X=10 とする。 \[ .2=.1\text{X}=.19\text{X}=\cdots \] すべての数を無限小数で表すことにすれば,零抜きk進法で小数を表現できる可能性はある。
最後のページです
2014.11.6 作成 / 2020.3.31 更新
Home › 正数の列で表す記数法