PL/I のコード フラグメントを以下に示します。
DECLARE WAVE_LTH FLOAT BINARY(21);
...
WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)
結果の値がどのように導出されるかを誰かが明確にすることはできますか?
PL/I のコード フラグメントを以下に示します。
DECLARE WAVE_LTH FLOAT BINARY(21);
...
WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)
結果の値がどのように導出されるかを誰かが明確にすることはできますか?
問題のプログラム ステートメントは、おそらく IBM System/360 ハードウェアで実行されている PL/I プログラムからのものです。これは 16 進浮動小数点表現を使用しました。詳細については、このウィキペディアの記事を参照してください。
PL/I に関する私の古い文献によると、FLOAT BINARY(21)
このプラットフォームでは単精度浮動小数点数を指定します。有効な仮数ビット数を21
指定します。これはオペランドのデフォルト値に対応するため、省略できます。基数 16 表現のため、24 ビット仮数の最上位 3 ビットはゼロになる可能性があります。これにより、21 ビットの精度が保証されます。FLOAT BINARY
サフィックスは、B
浮動小数点リテラルが基数 2 表現を使用していることを示しています。11001
2 進数では 10 進数で 25 です。指数自体は 10 進数で指定されるためE-10
、スケール ファクターは 2 -10です。したがって、この浮動小数点リテラル定数の値は 25 / 1024 または 0.0244140 です。