4

私は最近、浮動小数点演算がコンピューターでどのように機能するかを考えており、数式の背後にあるすべての技術の詳細を理解するのは難しいです。足し算、引き算、掛け算、割り算、余りの基本を理解する必要があります。これらを使用して、三角関数と数式を作成できるようになります。

私はそれについて何かを推測することができますが、それは少し不明確です。4バイトの整数を信号旗、基数、仮数で区切ることで不動点を作ることができることを私は知っています。これにより、1ビットのフラグ、5ビットの基数、および10ビットの仮数が得られます。32ビットのワードは浮動小数点値に最適です:)

2つのフロートの間に加算を行うには、2つの仮数を加算し、5ビットの基数にキャリーを加算するだけです。これは浮動小数点演算(または、正確には固定小数点演算)を実行する方法です。それとも私は完全に間違っていますか?

私が見たすべての説明は、数式や乗算などを使用しており、私が推測することに対して非常に複雑に見えるので、もう少し簡単になります。数学者ではなく、初心者のプログラマーに向けた説明が必要です。

4

3 に答える 3

2

浮動小数点数の構造を参照してください

于 2010-07-07T22:28:53.210 に答える
1

走って、歩かないで、多倍精度と浮動小数点演算の背後にある素晴らしい直感とアルゴリズムを含むクヌースの半数値アルゴリズムを取得してください。

于 2010-07-07T22:06:23.250 に答える
1

基数は表現によって異なります。基数r=2を使用する場合、基数を変更することはできません。基数には、どの基数があるかを示すデータすらありません。私はあなたが間違っていると思います、そしてあなたは指数を意味します。

浮動小数点に2つの数値を追加するには、仮数を回転させて指数を1つに等しくする必要があります。右の1ビットは指数+1を意味し、左の1ビットは指数-1を意味します。同じ指数の数値がある場合は、それらを追加できます。

Value(x)=仮数*基数^指数

adding these two numbers

    101011 * 2 ^ 13
    001011 * 2 ^ 12

would be the same as adding:

    101011 * 2 ^ 13
    000101 * 2 ^ 13

指数を互いに等しくした後、操作できます。また、表現に暗黙のビットがあるかどうかも知る必要があります。つまり、最上位ビットは1でなければならないため、通常、iee標準のように、そこにあることがわかっていますが、操作に使用されていても表現されません。 。

私はこれが少し混乱する可能性があることを知っています、そして私は最高の教師ではないので、あなたが持っている疑いがあるなら、ただ尋ねてください。

于 2010-07-07T22:16:54.520 に答える