¿Cómo funcionan los add add de carry carry?

2

Pensé que había entendido el concepto pero wikipedia me ha confundido. Hay dos salidas porque uno es para una suma parcial y uno para los bits de acarreo. Pero ¿por qué se debe usar para "calcular la suma de tres o más números de n bits"? ¿Por qué no se pueden calcular números de 2 n bits?

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?

    
pregunta Celeritas

1 respuesta

2
  

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)

    
respondido por el KillaKem

Lea otras preguntas en las etiquetas