キャリー保存算術では、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 の累乗で割るにはどうすればよいでしょうか? (キャリーセーブ番号のまま)