mieki256's diary



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) は、以下のようなフォーマットになっているようだけど。
(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

以上です。

過去ログ表示

Prev - 2019/05 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project