Pero, ¿por qué se debe usar para "calcular la suma de tres o más n bits?
números "¿por qué no puede calcular 2 números de n bits?
La adición de ahorro de acarreo de 2 números de N bits da como resultado que se produzcan dos números de (N + 1) bits, el acarreo virtual (VC) y la suma virtual (VS). Pero después de obtener VC y VS todavía tiene para sumar los dos valores junto con un sumador de convección para obtener su resultado final, por lo que solo agregar 2 números no tiene sentido. Tome este ejemplo, digamos que una suma de acarreo-ahorro toma k * T ms, donde k = número de N - números de bits se agrega, y un sumador convencional requiere 5T ms para agregar 2 números (independientemente del ancho de bits), luego si:
1) agregaste 2 números, luego
$$
\ text {Tiempo (Carry-Save) = 2T + 5T = 7T}
$$
$$
\ text {Tiempo (sumador convencional) = 5T}
$$
2) agregaste 3 números, luego
$$
\ text {Tiempo (Carry-Save) = 3T + 5T = 8T}
$$
$$
\ text {* Tiempo (sumador convencional) = 5T + 5T = 10T}
$$
Por lo tanto, la adición carry-save solo es útil si tiene al menos 3 operandos para agregar.
También el ejemplo dado bajo el concepto básico (donde el resultado es
21122120202022022122111011102212) me confunde más porque eso es
solo una salida, no dos?
En realidad, hay dos salidas, la representación que se ha utilizado es una representación de tipo aritmético redundante. El número "21122120202022022122111011102212" se representará como dos números diferentes, el carry virtual (VC) y la suma virtual (VS )
Así que A = 21122120202022022122111011102212 se representará como
VC = 10011010101010110110110000000011010
VS = 011001000000000000100111011100010
en su sumador de guardado de acarreo. El número de VC se obtiene al observar cada dígito de A por turno, comenzando por el LSB, si el dígito en una posición de bit particular, por ejemplo, la posición de bit m, es 2, luego coloque un 1 en la posición del bit m de VC, de lo contrario, coloque un cero. El VS se obtiene al configurar todos los dígitos que no son uno en A a cero. También puede convertir un número redundante en dos números no redundantes utilizando el método alternativo que se encuentra a continuación. .
Digamos que tienes B = 22012
Vuelva a escribir B usando solo binario usando 2 bits por dígito, es decir, B = 10,10,00,01,10
Extraiga el primer bit de cada dígito para formar VC y extraiga el último bit de cada dígito para formar VS, es decir (VC = 11001, VS = 00010)