4

PL/I のコード フラグメントを以下に示します。

DECLARE WAVE_LTH FLOAT BINARY(21);

...

WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)

結果の値がどのように導出されるかを誰かが明確にすることはできますか?

4

1 に答える 1

9

問題のプログラム ステートメントは、おそらく IBM System/360 ハードウェアで実行されている PL/I プログラムからのものです。これは 16 進浮動小数点表現を使用しました。詳細については、このウィキペディアの記事を参照してください。

PL/I に関する私の古い文献によると、FLOAT BINARY(21)このプラットフォームでは単精度浮動小数点数を指定します。有効な仮数ビット数を21指定します。これはオペランドのデフォルト値に対応するため、省略できます。基数 16 表現のため、24 ビット仮数の最上位 3 ビットはゼロになる可能性があります。これにより、21 ビットの精度が保証されます。FLOAT BINARY

サフィックスは、B浮動小数点リテラルが基数 2 表現を使用していることを示しています。110012 進数では 10 進数で 25 です。指数自体は 10 進数で指定されるためE-10、スケール ファクターは 2 -10です。したがって、この浮動小数点リテラル定数の値は 25 / 1024 または 0.0244140 です。

于 2015-09-02T16:49:30.797 に答える