进位保存算法使用两倍的位数,一个字保存“虚拟和”,一个字保存“虚拟进位”以避免传播进位,这是硬件速度的限制因素。
我有一个系统需要将这些数字除以 2 的幂,但简单地右移两个数字并不适用于所有情况,例如。两个 16 位进位保存数,相加产生 4000,C001 是虚拟和,7FFF 是虚拟进位。
C001 + 7FFF = 4000 (discard overflow bits)
but after right shift
6000 + 3FFF = 9FFF (when it should be 2000)
简而言之:您如何将进位保存数除以 2 的幂?(同时保留一个进位保存号码)