1. ホーム
  2. floating-point

[解決済み] 16ビット、32ビット、64ビットのIEEE-754システムで表現できる数値の範囲は?

2023-06-26 23:21:45

質問

浮動小数点数がどのように表現されるかについて少し知っていますが、十分ではありません。

一般的な質問です。

与えられた精度 (私の目的では、基本 10 における正確な小数点以下の桁数) に対して、16 ビット、32 ビット、64 ビットの IEEE-754 システムではどの範囲の数値を表現できますか?

具体的には、私は 16 ビットおよび 32 ビットの数値が ±0.5 (1 の位) または ±0.0005 (1,000 の位) に正確になる範囲にのみ関心があります。

どのように解決するのですか?

ある IEEE-754 浮動小数点数 X であれば

2^E <= abs(X) < 2^(E+1)

からの距離は X から次に大きい表現可能な浮動小数点数 ( イプシロン )は

epsilon = 2^(E-52)    % For a 64-bit float (double precision)
epsilon = 2^(E-23)    % For a 32-bit float (single precision)
epsilon = 2^(E-10)    % For a 16-bit float (half precision)

上記の式から、次のように計算することができる。

  • の場合 半精度 ...

    もし+/-0.5 (または 2^-1) の精度が必要な場合、数値の最大サイズは 2^10 です。これより大きいと、浮動小数点数間の距離が 0.5 よりも大きくなります。

    もし+/-0.0005 (約2^-11)の精度が必要なら、数値の最大サイズは1です。

  • の場合 単精度 ...

    もし+/-0.5 (または 2^-1) の精度が必要なら、数値の最大サイズは 2^23 となります。これより大きいと、浮動小数点数間の距離が 0.5 よりも大きくなります。

    もし+/-0.0005 (約2^-11) の精度が必要な場合、数値の最大サイズは 2^13 です。これより大きいと、浮動小数点数間の距離が 0.0005 よりも大きくなります。

  • の場合 倍精度 ...

    もし+/-0.5 (または 2^-1) の精度が必要なら、数値の最大サイズは 2^52 となります。これより大きいと、浮動小数点数間の距離が 0.5 よりも大きくなります。

    もし+/-0.0005 (約2^-11) の精度が必要なら、数値の最大サイズは 2^42 となります。これより大きいと、浮動小数点数間の距離が 0.0005 よりも大きくなります。