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)は
このブログ(以下のリンク)からダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい













このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)