MSXの場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/08/11 22:00 UTC 版)
MSX-BASICの演算ルーチンMATHPACKの場合、同様に4バイトで表すが、IEEE 754とは異なり s(符号ビット): 1 y(指数部の幅): 7 x(仮数部の幅): 24 syyy yyyy xxxx xxxx xxxx xxxx xxxx xxxx であり、指数部をバイナリ、仮数部をBCDで表現する。そのため、有効数字は正確に10進で6桁で、指数は±63乗である。他のパソコンのBASICはほとんどが2進での演算であった(他にBCDを採用した機種としてFP-1000がある)。 2進小数の主な利点は高速性とメモリ消費にあり、BCD小数の主な利点は現実の10進小数を誤差なく扱える事にあったと言ってよい。2進小数は原理上0.5や0.25、0.375といったn/(2^m)以外の値、つまり0.1や0.2といった数値を正確に扱う事が苦手であり(表示上は補正されているが、10進小数を2進小数に変換すると殆どの場合循環小数となり、微小な切り捨てが発生する)高速性よりも(10進の世界での)正確性が優先されるようなケースにおいてBCD小数は強みを発揮した(各種利息計算など)。 ただし当時のスペックにおいて10進小数は相応に重い処理であり、DAAという10進補正用の専用CPU命令を持っていたZ80であっても複雑な演算になればなるほど(例えば三角関数や対数関数のような数学関数)2進小数より負荷が増していく。MSX-BASICにおいて10進小数が採用された理由は、マイクロソフトBASICの中でも比較的後期に開発され新しい実装を試せた事、加えてホームコンピュータという需要の開拓においてより一般性を高めたいアスキー側の狙いがあったと考えられる。 CPUの浮動小数点ユニットとの相互運用を視野に入れなければならない現代の言語では、特殊な用途を除いてBCD小数を目にする機会は少ない。
※この「MSXの場合」の解説は、「単精度浮動小数点数」の解説の一部です。
「MSXの場合」を含む「単精度浮動小数点数」の記事については、「単精度浮動小数点数」の概要を参照ください。
- MSXの場合のページへのリンク