En la aritmética de guardar / guardar / tomar prestado, cada posición binaria se representa como dos bits. Los números pueden tener varias representaciones posibles.
+25 = P=11001 / N=00000
-10 = P=00000 / N=01010
El resultado es simplemente:
+ 25-10: P = 11001 / N = 01010
P = 1, N = 1 combinaciones se pueden simplificar a P = 0, N = 0.
Entonces:
+ 25-10: P = 10001 / N = 00010
Puedes convertir a una representación de complemento a dos tradicionales haciendo la resta real: 10001 - 00010 = 1111 = 15
Para una resta simple, no tiene ningún sentido.
Todo el propósito de este lío es que puedes hacer sumas o restas iterativas y solo tienes que realizar un nivel de operaciones binarias en cada paso (algunos XOR o muxes por bit), sin propagar el acarreo.
Por ejemplo, las divisiones (particularmente las divisiones SRT) se pueden hacer con muchas adiciones o restas sucesivas. El uso de representaciones carry-save / loan-save permite reducir el tiempo del ciclo, o calcular más bits por ciclo y, como no hay propagación del carry, no depende del tamaño del operando (por ejemplo, la misma frecuencia de ciclo está adaptada para punto flotante de precisión simple y doble).
Editar
Busque "sumador de préstamos prestados" para implementaciones reales. Por ejemplo: enlace
Editar
Los bloques de FA son "agregados completos"
Tome 3 entradas, A, B y C, cada peso 0 o 1.
El resultado es entre 00 y 11.
Un sumador completo es:
Carry = (A and B) or (B and C) or (A and C)
Sum = A xor B xor C
Las burbujas alrededor de los agregadores son, obviamente, inversores, 'NOT' gates
La versión 'Online' en el diagrama de la derecha procesa los bits en serie en lugar de en paralelo. Tengo la impresión de que primero se debe proporcionar el bit menos significativo. Los cuadrados son memoria / flipflops, el tiempo de propagación es, por lo tanto, 3 relojes.
El sumador
Este diagrama describe un sumador que toma dos vectores BS (X + / X-) y (Y + / Y-) y genera un resultado de BS (Z + / Z-). También se puede utilizar para calcular la suma de dos diferencias.
El problema que veo es que necesita el valor absoluto para calcular la "suma de las diferencias absolutas". No sé cómo convertir a lo absoluto sin hacer una comparación (llevar propagación).