これがどのように計算されるかを理解しようとしています:
数値を次のように表すコンピューター プログラム。全体の符号は 1 ビット、指数は 5 ビット、仮数は 20 ビット。明らかに、正と負の数を表すためにバイアスを使用する必要があります。これに基づいて、マシンの精度と可能な最大数をどのように計算しますか?
これがどのように計算されるかを理解しようとしています:
数値を次のように表すコンピューター プログラム。全体の符号は 1 ビット、指数は 5 ビット、仮数は 20 ビット。明らかに、正と負の数を表すためにバイアスを使用する必要があります。これに基づいて、マシンの精度と可能な最大数をどのように計算しますか?
IEEE 標準を使用していると仮定すると、数値の表現式は次のようになります。
number = sign*(1+2^(-m)*significand)*2^(exponent-bias)
ここでmは (整数) 仮数 (または仮数)を格納するために使用されるビット数であり、指数を格納するために使用されるビット数はどこにbias等しいです。2^(e-1) - 1e
そこから何を導き出せるか見てみましょう。ご了承ください
significand間の範囲の値(あなたの場合: 0 から 1048575 の間)。02^m - 1exponent間の範囲の値。ただし、両方の極値は、非正規数と呼ばれる例外 (非正規数、無限、および 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 です。
私はこれについて専門家ではありません。