Professional Documents
Culture Documents
Complemento a dos
Complemento a dos Decimal 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8
Complemento a dos con enteros de 4 bits El complemento a dos de un nmero N que, expresado en el sistema binario est compuesto por n dgitos, se define como: . El total de nmeros positivos ser Veamos un ejemplo: tomemos el nmero dgitos, y calculemos su complemento a dos: Cabe sealar que en este ejemplo se ha limitado el nmero de bits a 6, por lo que no sera posible distinguir entre el -45 y el 19 (el 19 en binario es 10011). En realidad, un nmero en complemento a dos se expresa con una cantidad arbitraria de unos a la izquierda, de la misma manera que un nmero binario positivo se expresa con una cantidad arbitraria de ceros. As, el -45, expresado en complemento a dos usando 8 bits sera 11010011, mientras que el 19 sera 00010011; y expresados en 16 bits seran 1111111111010011 y 0000000000010011 respectivamente. Se presenta la tabla de verdad del complemento a 2 para cuatro dgitos. y el de negativos , siendo n el nmero mximo de bits. , con 6 que, cuando se expresa en binario es
Complemento a dos
Conversin rpida
Una forma de hallar el opuesto de un nmero binario positivo en complemento a dos es comenzar por la derecha (el dgito menos significativo), copiando el nmero original (de derecha a izquierda) hasta encontrar el primer 1, despus de haber copiado el 1, se niegan (complementan) los dgitos restantes (es decir, copia un 0 si aparece un 1, o un 1 si aparece un 0). Este mtodo es mucho ms rpido para las personas, pues no utiliza el complemento a uno en su conversin. Por ejemplo, el complemento a dos de 0011 11010 es 1100 00110Otra forma es negar todos los dgitos (se halla el complemento a 1) y despus sumar un 1 al resultado, viene a ser lo mismo que lo anteriormente explicado. 100001 ---> 011110 --> 011111 Es equivalente negar todos los dgitos haciendo XOR contra un nmero con la misma cantidad de dgitos binarios pero lleno de 1s y sumar 1 al resultado. En la prctica podra explicarse como: 100001 XOR 111111 = 011110 Agregando 1 = 011111 Para implementarlo en una rutina escrita en el lenguaje de programacin C, asumiendo que 'x' es la cantidad a la que se le calcular el complemento a 2, 'n' el nmero mximo de bits de las cantidades representadas y 'y' es la variable en donde se almacenar el resultado. El clculo podra escribirse como: y=((x^^(2^n-1)++))&&(2^n-1); Si 'n' no va a cambiar a lo largo del programa, puede sustituirse como una constante y con ello acelerar el clculo y disminuir los recursos de cmputo consumidos. Por ejemplo, si todos los clculos son en 8 bits, la rutina anterior podra simplificarse a: y=((x^^0xFF)++)&&0xFF;
Aplicaciones
Su utilidad principal se encuentra en las operaciones matemticas con nmeros binarios. En particular, la resta de nmeros binarios se facilita enormemente utilizando el complemento a dos: la resta de dos nmeros binarios puede obtenerse sumando al minuendo el complemento a dos del sustraendo. Se utiliza porque la unidad aritmtico-lgica no resta nmeros binarios, suma binarios negativos, por eso esta conversin al negativo.
Referencias
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/