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 (符号ビットを無視) と AB を実行します。B の入力を XOR して 1 を加算しているので、2C で結果が得られます。
2 番目の pdf は、加算/減算操作に符号ビットを含めることを提案しています。朝にこれを試してみます。
頭の体操に何時間も費やしたので、少し疲れていて、まともに考えることができません。ここで、回路を次のように変更する必要があるかどうか疑問に思っています
。トグルの追加/サブボタンは引き続き B [a+(-b)] を XOR しますが、この部分の前に、仮数と符号を XOR して 2c に変換します。
このようにして、負の数の減算 (-A)-(-B) のケースをカバーできます。
複雑に聞こえますが。

4

1 に答える 1

0

基本原則は、内部的に足し算と引き算の部分があるということです。どちらのルーチンも正の数でのみ機能します。

以下、ADDSUBは内部ルーチンを表すために使用されます。オペランドが正か負かに応じて、操作をさまざまなケースに分割する必要があります。

追加の場合:

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" として定義し、追加のケースのみを実装することもできます。

于 2011-12-30T22:28:35.377 に答える