2019/05/14(火) [n年前の日記]
#1 [mz] 浮動小数点について調べてる
MZ-700 S-BASIC は、BASICソース内の数値を、5byteで収まる浮動小数点形式で記録している。テキスト出力するためには、1byteずつ読み取って、数値に変換してやらないといけない。が、どういうフォーマットで記録されているのかが分からないと変換しようがないので、そのあたりを勉強中。
例えば、C言語の場合、float (32bit = 4byte) と double (64bit = 8byte) があり、Python場合、float と言っても C言語の double 相当のようで。
MZシリーズの SP-5030, S-BASIC で使われている浮動小数点数は、40bit = 5byte。なので、C言語の float より、ちょっとだけ細かい数値を扱える、のかな。たぶん。
一般的な浮動小数点数 (IEEE 754) は、以下のようなフォーマットになっているようだけど。
S-BASIC の浮動小数点数は、ちょっと違っていて、以下のようなフォーマットになっているっぽい。最初に指数部が来て、その後に符号、最後に仮数部が並ぶ。
例えば、C言語の場合、float (32bit = 4byte) と double (64bit = 8byte) があり、Python場合、float と言っても C言語の double 相当のようで。
MZシリーズの SP-5030, S-BASIC で使われている浮動小数点数は、40bit = 5byte。なので、C言語の float より、ちょっとだけ細かい数値を扱える、のかな。たぶん。
一般的な浮動小数点数 (IEEE 754) は、以下のようなフォーマットになっているようだけど。
(seeeeeee efffffff ffffffff ffffffff)b s : 符号部 1 bit e : 指数部 8 bit f : 仮数部 23 bit 合計 32bit, 4byte
S-BASIC の浮動小数点数は、ちょっと違っていて、以下のようなフォーマットになっているっぽい。最初に指数部が来て、その後に符号、最後に仮数部が並ぶ。
(eeee eeee sfffffff ffffffff ffffffff ffffffff)b e : 指数部 8 bit s : 符号部 1 bit f : 仮数部 31 bit 合計 40bit, 5byte
[ ツッコむ ]
以上です。