2011-12-30 14 views
0

おそらく間違った場所を尋ねるが、私は試してみる。
浮動小数点を加算/減算する回路を設計する必要があります IEE 754標準で符号付きの振幅値を使用して処理しようとしました。 彼らはかなり大きいので、私はちょうど概念を証明するために何か小さいものから始めることに決めました。
正の数の加算と減算を実行するために、ネット上にいくつかのアルゴリズムが見つかりました。
ほとんどは次のようになります。 http://meseec.ce.rit.edu/eecc250-winter99/250-1-27-2000.pdf
彼らは符号ビットで何が起こるか説明しません。 今私は非常に混乱しています。私はパフォーマンスに違いはありませんネット上で見つけたものによると:負の数浮動小数点減算回路

A-B and A- (-B) 

誰かがアルゴリズムが詳細に説明されているリンクで私を助けることができますか?私はこの代数の説明に有用http://howardhuang.us/teaching/cs231/08-Subtraction.pdf
を見つけたすべての答え ため

おかげで現在の私の回路はkfmfe04が書いただけのようA + B(符号ビットを無視)し、A-Bを実行します。私はBの入力を排除して1を加えるので、結果は2Cになります。
2番目のpdfは、アド/サブ演算の符号ビットを含めることを示唆しています。私は朝にこれを試してみる。
私の脳を何時間も過ごしてしまったので、少し疲れていて、まっすぐ考えることができません。今私は私の回路を変更する必要があるのだろうかと疑問に思う:
トグル追加/サブボタンはまだB [a +( - b)] XORsだけでなく、この部分の前に2cにそれらを変換するための記号でXORs。
このようにして、負数減算(-A) - ( - B)の場合をカバーすることができます。
しかし、複雑に聞こえる。

+0

'A - ( - B)'は 'A + B'です。代数的です。 「ネット上で見つかったことによると違いはありません」とは、いくつかのサポートリンク、引用符、または参照が必要です。あなたがこれを見た場所を説明できるなら、助けになるでしょう。 –

+0

'A-B = A +(-B)'を意味しましたか? – kfmfe04

+0

私はこの代数的説明が有用であることを発見しました。http://howardhuang.us/teaching/cs231/08-Subtraction.pdf – user682217

答えて

0

基本的な原則は、内部的には加算と減算の部分があることです。どちらのルーチンも正の数でしか動作しません。

以下、ADDおよびSUBは、内部ルーチンを示すために使用されます。あなたは、オペランドが正または負の場合に応じて、異なる場合に操作を分割する必要があります。

添加のための

:減算に

pos1 + pos2 => pos1 ADD pos1 
pos1 + neg2 => pos1 SUB abs(neg2) 
neg1 + pos2 => pos2 SUB abs(neg1) 
neg1 + neg2 => - (abs(neg1) ADD abs(neg2)) 

:もちろん

pos1 - pos2 => pos1 SUB pos2 
pos1 - neg2 => pos1 ADD abs(neg2) 
neg1 - pos2 => - (abs(neg1) ADD pos2) 
neg1 - neg2 => abs(neg2) SUB abs(neg1) 

、あなたも可能性単純に "A - B"を "A + -B"と定義し、追加するケースのみを実装します。