Código binario, inverso y complemento
Código binario, complemento a uno (inverso) y complemento a dos, esta calculadora fue creada a petición de un usuario
Este contenido está bajo licencia de Creative Commons Attribution/Share-Alike License 3.0 (Unported). Esto significa que puedes redistribuirlo o modificar su contenido en forma libre bajo las mismas condiciones de licencia y debes mantener la atribución del mismo al autor original de este trabajo colocando un hipervínculo en tu sitio web a este trabajo https://es.planetcalc.com/747/. Así mismo, por favor no modifiques o alteres ninguna de las referencias al trabajo original (si hubiera alguna) que se encuentre en este contenido.
Un usuario nos pidió crear una calculadora en línea para convertir un número entero a su forma binaria y mostrar su código inverso y complemento /743/
Debajo se encuentra la calculadora que realiza esta tarea. Acepta números enteros negativos y positivos, y muestra los códigos mencionados.
Debajo de la calculadora, como siempre, se encuentra la explicación.
Actualización: Debido a los comentarios veo que la gente malinterpreta los resultados de la calculadora, es mi culpa. La calculadora sólo aplica el algoritmo descrito a un número ingresado. Cambié la calculadora para evitar confusiones. Ahora, para los números positivos muestra la representación binaria (No hay código inverso o complemento para los números positivos), y para los números negativos muestra su representación en positivo y código inverso y complemento.
Ahora, un poco de teoría
Código binario es la representación binaria de un entero sin signo. Si hablamos de computadoras, existe cierta cantidad de bits utilizados para representar un número. De tal forma, el rango que puede ser representado por n cantidad de bits es
Código inverso o complemento a uno es sólo el código binario invertido de un número. Es decir, todos los ceros se vuelven unos y todos los unos se vuelven ceros.
Código complemento o complemento a dos es el código inverso más uno.
Bien, ¿Qué es todo esto?
Estos códigos fueron inventados para volver las operaciones de signo más cómodas (para las máquinas). Como soy el tipo de persona que le gusta aprender de ejemplos, explicaré esto con ejemplos:
Asumamos que tenemos una computadora con números binarios de 4-bits. El rango total que puede ser representado por 4-bits es 16 - 0,1,... 15
00 - 0000
...
15 - 1111
Pero estos son números sin signo y no son muy útiles. Necesitamos introducir el signo. De tal forma, la mitad del rango se utiliza para números positivos (8, incluyendo el cero), y la mitad del rango - para negativos (también 8). Las maquinas consideran que el cero es un número positivo, distinto a la matemática común.
Es decir, nuestros positivos son 0,...,7, y los negativos son -1,...,-8.
Para distinguir entre números negativos y positivos, asignamos el bit más a la izquierda como un bit de signo. Un cero en el bit de signo significa que se trata de un número positivo y un uno significa que se trata de un número negativo.
Los números positivos se representan con simple código binario
0 - 0000
1 - 0001
...
7 - 0111
Pero, ¿Cómo se representan los números negativos? Aquí es donde entra el código complemento.
Es decir, -7 complemento es
7 binario = 0111
7 inverso = 1000
7 complemento = 1001
El 1001 binario es 9, el cual se aleja de -7 por 16, o . O, lo que es igual, el código complemento "complementa" el código binario por math>2^n, es decir 7+9=16
Esto resulta ser muy útil para las computaciones de las máquinas - el uso del código complemento para representar números negativos le permite a los ingenieros utilizar un esquema de suma tanto para sumar como para restar y de tal manera simplificar el diseño de una UAL (Unidad aritmético-lógica , parte del procesador). De igual forma, esta representación detecta fácilmente una sobrecarga cuando no hay suficientes bits para representar cierto número.
Varios ejemplos
7-3=4
0111 7 binario
1101 complemento a dos de 3
0100 resultado de la suma 4
-1+7=6
1111 complemento a dos de 1
0111 7 binario
0110 resultado de la suma 6
La sobrecarga se detecta al mirar los últimos dos números llevados, incluyendo el bit más a la derecha. Si los bits llevados son 11 o 00 entonces no hay sobrecarga, si los bits son 01 o 10 entonces hay sobrecarga. Y, si no hay sobrecarga, el bit más a la derecha puede ser ignorado sin problemas.
Algunos ejemplos con bits llevados y quinto bit (bit luego del bit más a la derecha)
7+1=8
00111 7 binario
00001 1 binario
01110 llevados
01000 resultado de la suma 8 - sobrecarga
Los últimos dos llevados son 01. Esto indica una sobrecarga
-7+7=0
00111 7 binario
01001 complemento a dos de 7
11110 llevados
10000 resultado de la suma 16 - pero el quinto bit puede ser ignorado,el resultado real es 0
Los dos últimos llevados son 11. Entonces no hay sobrecarga, así que el resultado es cero.
Para revisar la sobrecarga se puede utilizar un cálculo XOR en los dos últimos bits llevados.
Debido a estas convenientes propiedades el complemento a dos es el método más común para representar números negativos en computadoras.
P.D. El código inverso, o complemento a uno "complementa" el código binario por , (todos unos). También puede ser utilizado para representar números negativos, pero el esquema de suma debe emplear un llevado cíclico y eso es más complicado. Además, el rango que puede ser representado por n-bits se reduce por 1, es decir 1111 es ocupado por 0000 - cero negativo. Por lo tanto es menos conveniente.
Comentarios