0

キャリー保存算術では、2 倍のビット数を使用します。1 ワードは「仮想合計」を保持し、1 ワードは「仮想キャリー」を保持して、ハードウェア速度の制限要因であるキャリーの伝搬を回避します。

これらの数値を 2 の累乗で割る必要があるシステムがありますが、両方の数値を右にシフトするだけでは、すべての場合に機能しません。2 つの 16 ビット キャリー セーブ番号を追加して 4000 を生成します。C001 は仮想合計、7FFF は仮想キャリーです。

C001 + 7FFF = 4000  (discard overflow bits)
but after right shift
6000 + 3FFF = 9FFF   (when it should be 2000)

要するに: キャリー セーブの数値を 2 の累乗で割るにはどうすればよいでしょうか? (キャリーセーブ番号のまま)

4

2 に答える 2

0

シフト可能になるように表現を修正する手法があります。これは、Tobias Noll による論文「高速デジタル信号処理のためのキャリー セーブ アーキテクチャ」に由来します。キャリーおよび合計ベクトルの新しい符号ビットを次のように計算できます。

c' = c_out

s' = s xor c xor c_out

ここで、s と c は元の符号ビットで、c_out はキャリー セーブ加算で破棄されたキャリー ビットです。

于 2014-09-02T20:05:58.190 に答える