lo que sucede cuando el bit de acarreo es cero en la suma / resta algo para hardware

2

Este es el algoritmo en el diagrama de flujo para sumas y restas en computadoras.

A (s) es el bit de signo de A
B (s) es el bit de signo de B

// (s) denota el subíndice

E es el registro que tiene un bit de acarreo AVF es el registro que transporta el bit de desbordamiento. A + As es el registro del acumulador. (¡Un ahorrador!) Inicialmente, se realiza la operación XOR que verifica si el bit de signo de dos números es el mismo o no.

Entiendo este algoritmo, excepto la parte circulada. ¿Qué sucede cuando E = 0? Por favor explique tomando un ejemplo simple.

    
pregunta Suhail Gupta

3 respuestas

2

Lo que está sucediendo es:

  1. A está invertido.
  2. A se le ha agregado 1.
  3. A se invierte de nuevo.

Esto genera lo que se denomina "Complemento de dos" del número en A.

El complemento de Two es una forma de codificar números negativos en binario.

Puede leer más sobre el Complemento de Two aquí: enlace

    
respondido por el Majenko
1

La gran mayoría de las ALU modernas son sumadores de "complemento de dos", que no necesitan los pasos "adicionales" que usted circuló.

Esto se parece a una ALU de signo y magnitud , que no he visto en años.

Digamos que estamos restando (+7) - (+ 9). En formato de signo y magnitud, tenemos

As = +; A = 0000_0111 (represents +7 in sign-and-magnitude notation)
Bs = +; B = 0000_1001 (represents +9 in sign-and-magnitude notation)

La primera decisión compara los signos. Como +7 y +9 tienen el mismo signo (ambos positivos), bajamos las operaciones de la izquierda:

EA <- A + !B + 1 = 0000_0111 + 1111_0110 + 1 = 0_1111_1110

así que ahora

E = 0; A = 1111_1110

Esta es la representación complementaria de los dos del resultado. Un complemento a dos de ALU prácticamente termina aquí. Este diagrama de flujo ilustra una ALU de signo y magnitud, que lleva algunos pasos más:

Dado que el bit de acarreo E ahora es 0, eso implica que A era originalmente menor que B, por lo que necesitamos hacer una corrección especial para convertir la notación de complemento de dos a la notación de signo y magnitud:

A <- !A + 1 = !(1111_1110) + 1 = 0000_0001 + 1 = 0000_0010
As <- !As = !(+)

entonces terminamos con

As = -; A = 0000_0010 (represents -2 in sign-and-magnitude notation)

¿Es ese el resultado correcto para (+7) - (+ 9)?

    
respondido por el davidcary
0

¡Oh, te lo explico! En realidad, tienes que hacer una primera resta simple cual es el valor de 4-12 es decir, -8 Ahora vienen en equivalente binario de la resta decimal arriba 4 = 00100 12 = 11000 -12 = 2 s comp of 11000 i.e 00111+1=01000 now 4-12= 4+(-12)= 00100+01000= 01100 and 01100= 12 :O but 4-12!=12!!!!!!! actually if 0 is in 1st bit i.e in carry bit e=0 we have to make the 2 s comp de ans para obtener la respuesta real asi que El complemento de 2 de 01100 = 10011 + 1 = 10100 1er bit 1 denota que la respuesta es negativa y el resto denota la respuesta es decir posada 10100 10100 significa -ve 0100 es decir, -8 cual es nuestra verdadera respuesta :) espero que tengas

    
respondido por el akshat sinha

Lea otras preguntas en las etiquetas