2016-06-21 14 views
0

浮動小数点演算では、私が理解しているように、これは学校グレードの数学の派生物です。乗算と除算では、計算後に指数を加算または減算します。 (紙に)私のコード設計を行うには、私は私が下に表示されているいくつかの質問に走っています:付加および/または減算についてIEEE 754浮動小数点数学演算

...

  • 両方の場合はどのようにケースを処理しますベースと指数は異なりますか?
  • 指数の差がbigintegerデータ型のサイズよりも大きい場合はどうなりますか?

私はいくつかのものをオンラインで見つけましたが、実際にこのことにどのように対処しているのかは尋ねません。今では学年の数学から、計算を実行する前に値を正規化しなければなりません。

そう...

2^3 + 3^2 = 8 + 9 = 17

はここで必要同じものですか?

EDIT:質問が非常に具体的だと思ったので、混乱のためにコミュニティに謝ります。現在のプラットフォームはIA32なので、これは2の累乗を使用しています。浮動小数点の浮動小数点演算を行うプラットフォームはわかりません。私は例として小数を使用していました。最初の質問は、マークBで答えた

ありがたいことに、フロートは全て2のべき乗で行う、これだけ指数を正規化しています。例えば10の科学記法の威力を使用しています。

ここで2番目の質問(上記のとおり)は、値を正規化するときに行う必要があります。移動しなければならない量がデータ型のスペースを超えていますか?言い換えれば、もし私が... 32ビットの精度を持っていれば、私はシフトしなければならない... 35ビットと言う...指数を一致させるにはどうすればその状態を扱うのですか? FPUはどのようにそれを処理しますか?

+0

IEEE浮動小数点数は、しかし、常にベース2である。あなたがより多くを表現しようとした場合、あなたは間違いなく問題に実行することができますデータ型が保持できるよりも小さい(または小さい)。これはちょうど8ビットの整数に256の値を入れるのと同じです。それはちょうど収まらない。 –

+0

私は確信していないので、この質問をd​​ownvoteするつもりはありませんが、これはhttp://stackoverflow.com/help/dont-askで言及されているようなものかもしれません。浮動小数点値を処理します。 –

+1

@Lotharyx [Nope](https://en.wikipedia.org/wiki/IEEE_floating_point#IEEE_754-2008)では、10進形式も指定されています。 – user2079303

答えて

1

ありがたいことに、浮動小数点数はすべて2のべき乗で行われるため、指数を正規化するだけです。例えば10科学的表記法の使用電力:

3.1e5  0.031e7 
+ 2.96e7 -> + 2.96 e7 
--------  ------- 
       2.991e7 
0

IEE 754浮動小数点数は、浮動小数点の実装だけです。いつものように、ウィキペディアにはreferencesという素晴らしいものがあります。

ベースを選択します(通常は2ですが、IEEE 754もベース10を定義します)。実数はf = sign * significand * baseのように表されます。指数ここで、significandとexponentは両方とも整数と符号それはiか-1のどちらかです。具体的には、次のようになります。

有限数は、基数2(2進数)または基本10(10進数)のいずれかです。各有限数は3つの整数で記述されます。s =符号(0または1)、c = aの仮数(または '係数')、q =指数です。有限数の数値は、
(-1)s×c×bq
であり、bは基数(2または10)であり、基数とも呼ばれます。たとえば、基数が10、符号が1(負を示す)、有効数字が12345、指数が-3の場合、数値の値は-11×12345×10-3 = -1×12345です。 ×.001 = -12.345。

2つの無限大:+∞と-∞。

2種類のNaN:静かなNaN(qNaN)およびシグナル伝達NaN(sNaN)。 NaNは、NaNのソースを示す診断情報を対象としたペイロードを持ちます。 NaNの記号は意味を持ちませんが、状況によっては予測可能な場合もあります。

形式で表現することができる可能な有限の値はベースBによって決定される、仮数の桁数(精度p)、および指数パラメータEMAX:

  • Cがなければなりません0〜bp-1の範囲の整数(たとえば、b = 10およびp = 7の場合、cは0〜9999999)

  • qは、1-emax≦q + p-1≦ emax(例えば、p = 7、emax = 96の場合、qは-101から90までです)。したがって、(例えばパラメータの)

表すことができる最小の非ゼロの正の数は、1×10から101であり、最大は9999999×1090(9.999999×1096)、及び数字の全範囲であります-9.999999×1096から9.999999×1096である。数字-b1-emaxおよびb1-emax(ここでは、-1x10-95および1x10-95)は最小の(大きさの)正規数です。これらの最小の数字の間の非ゼロの数字を非正常な数字と呼ぶ。

0の値は有限の値であり、0の符号付きです。これらは符号付きの0で、ゼロが+0(正のゼロ)か-0(負のゼロ)かを指定します。

(多くの)詳細については、参照ページをご覧ください...

関連する問題