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 decremento de ALU?
Respuestas
¿Demasiados anuncios?Porque todos los 1s -1 de dos en dos-complemento de la codificación.
Pensar en ello. Con un N-número de bits, añadiendo 2N no cambia el valor debido a que el cambio está en el primer bit pasado el número. Por ejemplo, considerar la adición de un 16 a un número de 4 bits. En binario es:
XXXX + 10000 ------- 1XXXX
lo que es todavía sólo XXXX porque, por definición, de un 4 bits número de guardar solo los 4 bits.
Así que si la adición de 2N se obtiene el mismo valor, a continuación, agregar 2N-1 se producen uno menos, que es lo mismo que restar 1.
Podría ser más fácil de entender esto en decimal. Imaginar que estamos haciendo aritmética de tres dígitos de la base de 10 números: 445, 900, 132, 042, 007, etc. Podemos agregar los números juntos, pero el resultado siempre es truncado a tres dígitos. He aquí un ejemplo:
\$900 + 132 = 1032 \to 032\$
Ahora, veamos lo que ocurre cuando añadimos 999 a un número:
\$042 + 999 = 1041 \to 041\$
\$041 + 999 = 1040 \to 040\$
\$040 + 999 = 1039 \to 039\$
Mientras dejamos caer el cuarto dígito, la adición de 999 (el mayor número de tres dígitos) funciona igual que restar 1!
Binario funciona de la misma manera. En tu ejemplo, la adición de la mayor de cuatro el número de bits funciona igual que restar 1. De nuevo, esto es debido a que nos vamos a dejar el llevar a cabo desde el bit más alto.
\$0110 + 1111 = 10101 \to 0101\$
\$0101 + 1111 = 10100 \to 0100\$
\$0100 + 1111 = 10011 \to 0011\$
\$0011 + 1111 = 10010 \to 0010\$
Esto se denomina complemento a dos de la aritmética. Con este sistema, se puede calcular el "negativo" de cualquiera de los n bits del número binario por restar de \$2^n\$. Para los cuatro bits de los números, esto funciona así:
\$-1 = 2^4 - 1 = 10000 - 0001 = 1111\$
\$-5 = 2^4 - 5 = 10000 - 0101 = 1011\$
Así que la adición de 1011 a cuatro el número de bits es igual que restar 5, mientras que caiga el último de llevar.
Hay un más rápido y de manera más común para calcular el complemento a dos -- invertir todos los bits, a continuación, añadir uno. Esto le permite calcular una de cuatro bits negativos mediante la inversión y, además, en lugar de tener cinco bits de la resta. He aquí cómo calcular -1 y -5 uso de este método:
\$-1 = \lnot 0001 + 1 = 1110 + 1 = 1111\$
\$-5 = \lnot 0101 + 1 = 1010 + 1 = 1011\$
Creo que de la resta entre dos números sumando el inverso de la segunda,
x+(-y) , por lo que para disminuir agregar -1.
Esto se expresa mediante el método de complemento a Dos de codificación, el cual establece que: Para obtener el inverso de un número que encontrará su complemento (reemplazar el 0 por 1 y viceversa) y, a continuación, añadir 1 al resultado, lleva a tu pregunta, en la que: 1 en la representación binaria es: 0001, su inversa elemento (i.e -1) es: 1111.
Cheque Firmado número de representaciones para su posterior lectura.