Si pones "complemento a dos" en el cuadro de búsqueda, puedes encontrar un gran número de preguntas y respuestas que describen el complemento a dos.
Pero intentaré dar una visión rápida de la notación hexadecimal frente a la binaria y el complemento a dos.
Hexadecimal frente a binario
La conversión entre números hexadecimales y binarios es, en realidad, extremadamente fácil. Puedes hacerlo a mano sin necesidad de cálculos intermedios. El dato clave que hay que recordar es que un dígito hexadecimal equivale a exactamente cuatro dígitos binarios.
Por ejemplo, d16=11012. (Subíndice 16 indica un número hexadecimal, el subíndice 2 indica binario). Del mismo modo, 816=10002, 716=01112, y 116=00012. (Obsérvese que para el propósito de este algoritmo de conversión siempre escriba cuatro dígitos del número binario).
En el caso de múltiples dígitos hexadecimales, podemos convertirlos a binario simplemente concatenando los equivalentes de cuatro bits: 178d16=0001 0111 1000 11012. He mostrado el número binario con espacios entre los grupos de cuatro bits. Por supuesto, cuando escribir el número normalmente probablemente cerraría esos espacios, y podría omitir los ceros a la izquierda. Sólo recuerda que sólo puedes omitir los ceros a la izquierda después de concatenando los grupos de cuatro bits juntos.
La conversión de binario a hexadecimal es simplemente el proceso inverso. Agrupa los bits de tu número binario en grupos de cuatro bits, empezando por el bit más a la derecha. Cada grupo de cuatro bits se sustituye por un bit hexadecimal igual. Así, si nos dan el número binario 10111100011012, podemos escribir 1 0111 1000 11012=178d16.
Complemento a dos
Matemáticamente, se puede hablar de una representación binaria genérica "sin signo" de los números no negativos; se pueden utilizar tantos bits como sean necesarios para representar cualquier número entero no negativo que se desee. Pero no existe una representación genérica complemento a dos representación. Sólo hay n -representaciones de complemento a dos bits.
En la gran mayoría de las aplicaciones actuales, n es 16 o 32, pero a veces es 64 o incluso 8. Pero n no tiene que ser un poder de 2, en principio, y en el pasado había ordenadores que almacenaban enteros utilizando n bits donde n no era un poder de 2.
El menor número que se puede escribir en un n -representación de complemento a dos bits es −2n−1. El más grande es 2n−1−1. También es posible escribir cualquier número entero entre esos dos valores.
Para escribir un entero no negativo en n -en notación de complemento a dos, siempre que el número no sea mayor que 2n−1−1, simplemente se escribe el número en binario y se "rellena" a la izquierda con 0 dígitos hasta que haya n dígitos en total. El número con el que se empieza no puede tener más de n−1 bits antes del "relleno". por lo que el bit más a la izquierda siempre será 0.
Para escribir un número entero negativo, siempre que no sea inferior a −2n−1, el procedimiento que se suele recomendar es escribir el valor absoluto del número como un número binario ordinario, "voltear" todos los bits (cada 0 se convierte en 1 y cada 1 se convierte en 0 ), y a continuación añade uno. El bit más a la izquierda del resultado será siempre 1.
Matemáticamente, el n -representación en complemento a dos de un entero x para −2n−1≤x<0 es igual al número binario ordinario (sin signo) igual a 2n+x. En otras palabras, calcular 2n+x utilizando la notación binaria ordinaria (sin límite de bits) notación binaria, y después de haber escrito el resultado declare que es n -complemento a dos bits. Esta es una alternativa al algoritmo de "voltear los bits y sumar uno" y siempre produce el mismo resultado, siempre que el número esté dentro del rango dentro del rango que puede ser representado. Está claro que cuando el resultado se ve como un número sin signo, está en el rango 2n−1 a 2n−1, por lo que siempre es un n -bit número binario cuyo bit más a la izquierda es 1.