¿Por qué todos los 1 se utilizan como segunda entrada en la operación de disminución de ALU?

4

Suponga que las primeras cuatro entradas de datos son X (X0, X1, X2, X3) y las segundas cuatro entradas de datos son Y (Y0, Y1, Y2, Y3) en una ALU de 4 bits. ¿Por qué "Todos los 1" se utilizan como una entrada para Y en la operación de disminución de ALU?

    
pregunta user253689

3 respuestas

4

Porque todos los 1s son -1 en la codificación de dos complementos.

Piénsalo. Con un número de N bits, la adición de 2 N no cambia el valor porque el cambio está en el primer bit después del número. Por ejemplo, considere agregar 16 a un número de 4 bits. En binario es:

    XXXX
 + 10000
 -------
   1XXXX

que aún es XXXX porque, por definición, un número de 4 bits solo guarda los 4 bits.

Entonces, si agregar 2 N produce el mismo valor, entonces agregar 2 N -1 producirá uno menos, que es lo mismo que restar 1.

    
respondido por el Olin Lathrop
1

Podría ser más fácil entender esto en decimal. Imagine que estamos haciendo aritmética en números de base de tres dígitos 10: 445, 900, 132, 042, 007, etc. Podemos sumar los números, pero el resultado siempre se trunca a tres dígitos. Aquí hay un ejemplo:

  

\ $ 900 + 132 = 1032 \ a 032 \ $

Ahora, mira lo que sucede cuando agregamos 999 a un número:

  

\ $ 042 + 999 = 1041 \ a 041 \ $

     

\ $ 041 + 999 = 1040 \ a 040 \ $

     

\ $ 040 + 999 = 1039 \ a 039 \ $

¡Mientras eliminemos el cuarto dígito, agregar 999 (el número de tres dígitos más grande posible) funciona igual que restar 1!

El binario funciona de la misma manera. En su ejemplo, agregar el mayor número posible de cuatro bits funciona igual que restar 1. Nuevamente, esto se debe a que estamos eliminando el límite máximo.

  

\ $ 0110 + 1111 = 10101 \ a 0101 \ $

     

\ $ 0101 + 1111 = 10100 \ a 0100 \ $

     

\ $ 0100 + 1111 = 10011 \ a 0011 \ $

     

\ $ 0011 + 1111 = 10010 \ a 0010 \ $

Esto se llama aritmética de complemento de dos . Usando este sistema, puede calcular el "negativo" de cualquier número binario de n bits restándolo de \ $ 2 ^ n \ $. Para números de cuatro bits, funciona así:

  

\ $ - 1 = 2 ^ 4 - 1 = 10000 - 0001 = 1111 \ $

     

\ $ - 5 = 2 ^ 4 - 5 = 10000 - 0101 = 1011 \ $

Por lo tanto, agregar 1011 a un número de cuatro bits es como restar 5, siempre que sueltes el último acarreo.

Hay una forma más rápida y más común de calcular el complemento de los dos: invertir todos los bits y luego agregar uno. Esto le permite calcular un negativo de cuatro bits utilizando inversión y suma, en lugar de necesitar una resta de cinco bits. Aquí es cómo calcular -1 y -5 usando este método:

  

\ $ - 1 = \ lnot 0001 + 1 = 1110 + 1 = 1111 \ $

     

\ $ - 5 = \ lnot 0101 + 1 = 1010 + 1 = 1011 \ $

    
respondido por el Adam Haun
0

Piense en la resta entre dos números como la suma de la inversa del segundo,
x + (- y) , así que para disminuirlo, agregue -1 .
Esto se expresa mediante el método de codificación Complemento de dos , que establece que: Para obtener el inverso de un número, encuentra su complemento (reemplaza 0 por 1 y viceversa) y luego agrega 1 al resultado , lo que lleva a tu pregunta, en la cual: 1 en representación binaria es: 0001 , su elemento inverso (es decir, -1) es: 1111.
Verifique Representaciones de números firmados para lectura adicional.

    
respondido por el Ziezi

Lea otras preguntas en las etiquetas