Complemento a uno
Complemento a uno Decimal
0111
7
0110
6
0101
5
0100
4
0011
3
0010
2
0001
1
0000
0
1111
0
1110
1
1101
-2
1100
3
1011
4
1010
5
1001
6
1000
7
Complemento a uno con enteros de 4 bits
El complemento a uno de un nmero binario es una operacin matemtica muy importante
en el campo de la computacin, ya que nos permite obtener la representacin binaria de
nmeros negativos. Se obtiene al cambiar cada uno de los dgitos del nmero binario N por
su complementario, esto es, cambiar los unos por ceros y los ceros por unos.
Por ejemplo:
Nmero binario =
Complemento a uno =
Podemos referirnos al complemento a uno como la funcin complemento a
uno
, que tambin se puede definir como el complemento a dos menos una
unidad, es decir
. Es trivial a partir de la definicin anterior, que
el complemento a dos se puede definir como
Por ejemplo, vamos a calcular el complemento a 1 del nmero
expresado en binario
;
que,
tiene 6 dgitos:
su complemento a
dos es:
complemento a uno es una unidad menor:
y, su
010011
-000001
------010010
Existe una desventaja a la hora de utilizar el complemento a uno para representar
nmeros negativos que hace ms adecuado el complemento a dos, y es que
existen dos posibles representaciones para el nmero cero.
Complemento a dos
Complemento a Decim
dos
al
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
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
mximo de bits. El 0 contara aparte.
Veamos un ejemplo: tomemos el nmero
es
y el de negativos
, siendo n el nmero
que, cuando se expresa en binario
, con 6 dgitos, y calculemos su complemento a dos:
y, por lo tanto:
Puede parecer farragoso, pero es muy fcil obtener el complemento a dos de un
nmero a partir de su complemento a uno, porque el complemento a dos de un
nmero binario es una unidad mayor que su complemento a uno, es decir:
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.
Clculo del complemento a dos[editar]
El clculo del complemento a dos es muy sencillo y muy fcil de realizar mediante
puertas lgicas, donde reside su utilidad.
Para comenzar los nmeros positivos se quedarn igual en su representacin
binaria. Los nmeros negativos deberemos invertir el valor de cada una de sus
cifras, es decir realizar el complemento a uno, y sumarle 1 al nmero obtenido.
Podemos observar esto en la tabla de ejemplo.
Cabe recordar que debido a la utilizacin de un bit para representar el signo, el
rango de valores ser diferente al de una representacin binaria habitual; el rango
de valores decimales para n bits ser:
Conversin rpida[editar]
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. 1
Por ejemplo, el complemento a dos de 0011 11010 es 1100 00110-
Otra 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[editar]
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.
Decimal codificado en binario
En sistemas de computacin, Binary-Coded Decimal (BCD) o Decimal codificado en
binario es un estndar para representar nmeros decimales en el sistema binario, en donde
cada dgito decimal es codificado con una secuencia de 4 bits. Con esta codificacin especial
de los dgitos decimales en el sistema binario, se pueden realizar operaciones aritmticas
como suma, resta, multiplicacin y divisin de nmeros en representacin decimal, sin perder
en los clculos la precisin ni tener las inexactitudes en que normalmente se incurre con las
conversiones de decimal a binario puro y de binario puro a decimal. La conversin de los
nmeros decimales a BCD y viceversa es muy sencilla, pero los clculos en BCD se llevan
ms tiempo y son algo ms complicados que con nmeros binarios puros.
Representacin BCD[editar]
Cada dgito decimal tiene una representacin binaria codificada con 4 bits:
Decimal:
BCD:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Los nmeros decimales, se codifican en BCD con los bits que representan sus dgitos.
Por ejemplo, la codificacin en BCD del nmero decimal 59237 es:
Decimal:
BCD:
0101 1001 0010 0011 0111
La representacin anterior (en BCD) es diferente de la representacin del mismo nmero
decimal en binario puro:
1110011101100101
Fundamentos[editar]
En BCD cada cifra que representa un dgito decimal (0, 1,...8 y 9) se representa con su
equivalente binario en cuatro bits (nibble o cuarteto) (esto es as porque es el nmero de bits
necesario para representar el nueve, el nmero ms alto que se puede representar en BCD).
En la siguiente tabla se muestran los cdigos BCD ms empleados:
Decimal Natural Aiken 5 4 2 1 Exceso 3
0000
0000
0000
0011
0001
0001
0001
0100
0010
0010
0010
0101
0011
0011
0011
0110
0100
0100
0100
0111
0101
1011
1000
1000
0110
1100
1001
1001
0111
1101
1010
1010
1000
1110
1011
1011
1001
1111
1100
1100
Como se observa, con el BCD slo se utilizan 10 de las 16 posibles combinaciones que se
pueden formar con nmeros de 4 bits, por lo que el sistema pierde capacidad de
representacin, aunque se facilita la compresin de los nmeros. Esto es porque el BCD slo
se usa para representar cifras, no nmeros en su totalidad. Esto quiere decir que para
nmeros de ms de una cifra hacen falta dos nmeros BCD.
Una forma sencilla de calcular nmeros en BCD es sumando normalmente bit a bit, y
si el conjunto de 4 bits sobrepasa el nmero 9, entonces se le suma un 6 (0110) en
binario, para poder volver a empezar, como si hiciramos un mdulo al elemento sumante.
Desde que los sistemas informticos empezaron a almacenar los datos en conjuntos de
ocho bits (octeto), hay dos maneras comunes de almacenar los datos BCD:
Omisin de los cuatro bits ms significativos (como sucede en el EBCDIC)
Almacenamiento de dos datos BCD; es el denominado BCD "empaquetado", en el
que tambin se incluye en primer lugar el signo, por lo general con 1100 para el +
y 1101 para el -.
De este modo, el nmero 127 sera representado como (11110001, 11110010, 11110111)
en el EBCDIC o (00010010, 01111100) en el BCD empaquetado.
El BCD sigue siendo ampliamente utilizado para almacenar datos, en aritmtica binaria o
en electrnica. Los nmeros se pueden mostrar fcilmente en visualizadores de siete
segmentos enviando cada cuarteto BCD a un visualizador. La BIOS de un ordenador
personal almacena generalmente la fecha y la hora en formato BCD; probablemente por
razones histricas se evit la necesidad de su conversin en ASCII.
La ventaja del cdigo BCD frente a la representacin binaria clsica es que no hay lmite
para el tamao de un nmero. Los nmeros que se representan en formato binario estn
generalmente limitados por el nmero mayor que se pueda representar con 8, 16, 32 o 64
bits. Por el contrario, utilizando BCD, aadir un nuevo dgito slo implica aadir una nueva
secuencia de 4 bits.
CONVERSIONES DE DECIMAL A XS3 (EXCESO 3)[editar]
La conversin de nmeros decimales a exceso 3 (Xs3) se lo realiza de la siguiente forma:
Ejemplo:
Transformar el decimal 67 a xs3
Tomamos cada dgito y le sumamos 3:
6+3=9
7+3=10
Ahora cada cantidad es transformada a binario:
9=1001
10= 1010
Por lo que el resultado de la conversin a xs3 ser el nmero 10011010
El BCD en electrnica[editar]
El BCD es muy comn en sistemas electrnicos donde se debe mostrar un valor
numrico, especialmente en los sistemas digitales no programados
(sin microprocesador o microcontrolador).
Utilizando el cdigo BCD, se simplifica la manipulacin de los datos numricos que deben
ser mostrados por ejemplo en un visualizador de siete segmentos. Esto lleva a su vez una
simplificacin en el diseo fsico del circuito (hardware). Si la cantidad numrica fuera
almacenada y manipulada en binario natural, el circuito sera mucho ms complejo que si
se utiliza el BCD. Hay un programa que se llama b1411 que sirve para dividir al sistema
binario en dos combinaciones. Una por ejemplo es la de sistemas digitales.
IBM y el BCD[editar]
IBM utiliz los trminos decimal codificado en binario y BCD, para el cdigo binario de
seis bits con el que se podan representar nmeros, letras maysculas, y caracteres
especiales. Una variante del BCD fue utilizada en la mayora de las primeras
computadoras de IBM, incluyendo IBM1620 e IBM 1400. Con la introduccin
des System/360, el BCD fue substituido por el EBCDIC, de ocho bits.
Las posiciones de los bits, en el BCD de seis bits, generalmente fueron etiquetadas
como B, A, 8, 4, 2 y 1. Para codificar los dgitos numricos, A y B eran cero. La letra A fue
codificada como (B, A, 1), etctera.
Historia legal[editar]
En 1972, el Tribunal Supremo de Estados Unidos anul la decisin de una instancia ms
baja de la corte que haba permitido una patente para convertir nmeros codificados BCD
a binario en una computadora (vase Gottschalk v Benson en ingls). Este fue uno de los
primeros casos importantes en la determinacin de la patentabilidad del software y de los
algoritmos.