N88-BASICでn進数 (1回目)
2022/2/11(金)
N88-BASICでn進数 (1回目)
10進数をn進数に変換します
10進数の数値をa≧0とします
(負の数は-が付くだけなので
正の数のみ説明します)
[a]をaの整数部分Fract(a)を小数部分とする
aの整数部分をx0、小数部分をy0とし
x0 = [a], y0 = Fract(a)と置く
xi+1 ← [xi / n] (商)
b1+1 ← xi - n[xi / n] (余り)
i = 0, 1, … (xi+1>0の間繰返す)
yi+1 ← Fract(yi ・ n)
c1+1 ← [yi ・ n]
i = 0, 1, … (yi+1>0の間繰返す)
結果n進数は
… b2 b1 . c1 c2 …
つまり
biが右から数えてi桁目ciが小数第i位目となる
例
13.8125(10)→(2)
整数部分は
5を2で割った余りを並べる
2より小さくなれば割らなくても
それが余りです
2)13
2) 6 … 1 ← 1桁目(最下位)
2) 3 … 0 ← 2桁目
1 … 1 ← 3桁目
↑
4桁目(最上位)
1101です
小数部分は
13.8125の小数部分を2倍し整数部分を並べ
小数部分は繰り返す
小数部分0.8125・2 = 1.625 小数第1位は1
小数部分0.625 ・2 = 1.25 小数第2位は1
小数部分0.25 ・2 = 0.5 小数第3位は0
小数部分0.5 ・2 = 1 小数第4位は1
小数部分0で終了
13.8125(10)→1101.1101(2)
1桁を1文字で表すため11進数以上では
10~35をA~Z(26文字)で表す事にすると
2≦n≦36となりますが
エラーチェックは行っていません
また、小数の桁数は倍精度実数型に依存
します(10進数で16桁程です)
NL-BASICとblg~.zip(nary001.bas)は
このブログ(以下のリンク)からダウンロードできます
N88-BASICでn進数 (1回目)
10進数をn進数に変換します
10進数の数値をa≧0とします
(負の数は-が付くだけなので
正の数のみ説明します)
[a]をaの整数部分Fract(a)を小数部分とする
aの整数部分をx0、小数部分をy0とし
x0 = [a], y0 = Fract(a)と置く
xi+1 ← [xi / n] (商)
b1+1 ← xi - n[xi / n] (余り)
i = 0, 1, … (xi+1>0の間繰返す)
yi+1 ← Fract(yi ・ n)
c1+1 ← [yi ・ n]
i = 0, 1, … (yi+1>0の間繰返す)
結果n進数は
… b2 b1 . c1 c2 …
つまり
biが右から数えてi桁目ciが小数第i位目となる
例
13.8125(10)→(2)
整数部分は
5を2で割った余りを並べる
2より小さくなれば割らなくても
それが余りです
2)13
2) 6 … 1 ← 1桁目(最下位)
2) 3 … 0 ← 2桁目
1 … 1 ← 3桁目
↑
4桁目(最上位)
1101です
小数部分は
13.8125の小数部分を2倍し整数部分を並べ
小数部分は繰り返す
小数部分0.8125・2 = 1.625 小数第1位は1
小数部分0.625 ・2 = 1.25 小数第2位は1
小数部分0.25 ・2 = 0.5 小数第3位は0
小数部分0.5 ・2 = 1 小数第4位は1
小数部分0で終了
13.8125(10)→1101.1101(2)
1桁を1文字で表すため11進数以上では
10~35をA~Z(26文字)で表す事にすると
2≦n≦36となりますが
エラーチェックは行っていません
また、小数の桁数は倍精度実数型に依存
します(10進数で16桁程です)
このブログ(以下のリンク)からダウンロードできます