0

これがどのように計算されるかを理解しようとしています:

数値を次のように表すコンピューター プログラム。全体の符号は 1 ビット、指数は 5 ビット、仮数は 20 ビット。明らかに、正と負の数を表すためにバイアスを使用する必要があります。これに基づいて、マシンの精度と可能な最大数をどのように計算しますか?

4

2 に答える 2

0

IEEE 標準を使用していると仮定すると、数値の表現式は次のようになります。

number = sign*(1+2^(-m)*significand)*2^(exponent-bias)

ここでmは (整数) 仮数 (または仮数)を格納するために使用されるビット数であり、指数を格納するために使用されるビット数はどこにbias等しいです。2^(e-1) - 1e

そこから何を導き出せるか見てみましょう。ご了承ください

  • とのsignificand間の範囲の値(あなたの場合: 0 から 1048575 の間)。02^m - 1
  • とのexponent間の範囲の値。ただし、両方の極値は、非正規数と呼ばれる例外 (非正規数、無限、および NAN) 用に予約されています。02^e - 1

その結果、

  • 小数部分の最小値(1+2^(-m)*significand)は 1、最大値は2-2^(-m)(あなたの場合は 2-2^(-20)、約 1,999999046) です。
  • 合計指数の例外的でない最小値exponent-bias-2^(e-1)+2(あなたの場合は -14)、最大は2^(e-1)-1(あなたの場合: 15) です。

したがって、次のことがわかります。

  • 表現できる最小の(正の)正規化数は2^(-2^(e-1)+2)(あなたの場合は2 ^(-14)、約0,000061035)です
  • 最大は(2-2^(-m))*(2^(2^(e-1)-1))(あなたの場合 (2-2^(-20))*(2^15)、約 65535,96875) です。

「マシン精度」については、あなたが何を意味するのかわかりませんがm+1、バイナリ精度 (ここでは 21) と呼ばれ、10 進数での精度はlog10(2^(m+1))です。これは約 6.3 です。

私はこれについて専門家ではありません。

于 2013-08-30T13:06:02.233 に答える