Queremos agregar 1011 a -110001.
1011 ya es positivo, por lo que la representación del complemento de dos es la misma.
Digamos que tenemos 8 bits para representar estos números. Se realmente tenemos
00001011 y 00110001.
- ¿La capacitación para la detección de spam es universal en todos los usuarios para los principales clientes de correo electrónico?
- ¿Cuáles son algunos proyectos impresionantes de Inteligencia Artificial, que son menos conocidos?
- ¿Cuáles son los temas y blogs específicos de Quora que debe seguir un dominio geek en informática / ingeniería de software?
- Cómo mostrar el principio básico detrás de DMA (acceso directo a memoria)
- ¿Cuál es la mejor práctica para 'portar' modelos de Machine Learning (especialmente aprendizaje profundo) de Python a sistemas integrados para aplicaciones como visión artificial?
Para obtener el complemento de dos de 00110001 (para obtener su representación negativa), necesitamos voltear los bits y agregar uno .
¿Por qué voltear los bits?
Así es como se representa el número de complemento de dos: El valor del primer bit es negativo 2 ^ N (en este caso, es -2 ^ 7) Los valores de todos los otros bits son iguales a su representación binaria positiva.
El bit más significativo en la representación binaria siempre es cero, por lo que cuando lo cambiamos a uno, restamos 2 ^ N de nuestro número. Para contrarrestar el hecho de que solo restamos una gran cantidad del valor de nuestro número, necesitamos agregar algo más. Cuanto mayor fuera nuestro número original (por ejemplo, si fuera 127), solo querríamos agregar un poco de regreso (-128 + 1 = -127). Del mismo modo, cuanto menor fuera nuestro número original (por ejemplo, si fuera 3), querríamos agregar un montón (-128 + 125 = -3). Por esta razón de compensación, volteamos los bits.
¿Por qué agregar uno?
La suma de todas las potencias de dos menos de 2 ^ N es 2 ^ N – 1. Y así, al voltear todos los bits, perdimos 1, y ahora necesitamos volver a agregarlo.
Y entonces, el complemento de dos de 00110001 es 11001111.
La belleza del sistema de complemento de dos es que ahora podemos sumar los dos números para ejecutar la resta.
00001011
+11001111
11011010
Para convertir del complemento de dos a binario, sumamos el valor negativo del primer bit (ponderado por su potencia de dos) y el valor positivo de todo el resto.
Y entonces, la respuesta es
-128 + 64 + 16 + 8 + 2 = -38
Para verificar, el problema original era “restar 49 de 11”.