Download Tema 2: Sistemas de representación numérica

Document related concepts

Sistema binario wikipedia , lookup

Sistema hexadecimal wikipedia , lookup

Representación de números con signo wikipedia , lookup

Decimal codificado en binario wikipedia , lookup

Código binario wikipedia , lookup

Transcript
Estructura de computadores
Tema 2: Sistemas de representación numérica
Tema 2: Sistemas de representación numérica
2.1 Sistemas de Numeración
Definiciones previas
Comenzaremos por definir unos conceptos fundamentales.
Existen 2 tipos de computadoras:
•
Analógicas: actúan bajo el control de variables continuas, es decir, que
toman infinitos valores.
•
Digitales: actúan bajo el control de variables discretas, es decir, que
pueden tomar un número finito de valores en el tiempo.
Las computadoras con las que vamos a tratar son digitales.
Sistema de numeración: es un conjunto de reglas, signos y convenios que
nos permiten expresar, verbal y gráficamente, las cantidades de las magnitudes
o valores numéricos.
Base de un sistema de numeración: es el número de signos distintos que se
emplean en el sistema.
Alfabeto de un sistema de numeración: son todos y cada uno de los signos
que se emplean en el sistema. A partir de ellos se expresarán todas las
cantidades.
Por ejemplo, el sistema de numeración decimal utiliza diez dígitos:
Base:
10
Alfabeto:
0,1,2,3,4,5,6,7,8,9.
1
Estructura de computadores
Tema 2: Sistemas de representación numérica
Clasificación
Los sistemas de numeración se clasifican en: posicionales y no posicionales.
1. Sistemas posicionales
En ellos, cada cifra de un valor numérico contribuye al valor final
dependiendo de su valor y de la posición que ocupa dentro de él (valor
relativo). En estos sistemas tenemos tantos símbolos como la base del
sistema. Los números mayores que la base se representan por medio de
varias cifras.
El valor final será la suma de una serie de potencias de la base del sistema
(B):
N = An·Bn + A n-1·Bn-1 + ... + A 1·B1 + A 0·B0
Donde A i son las distintas cifras del valor numérico e ‘i’ su posición.
2. Sistemas no posicionales
Al contrario que en el caso anterior, en este caso la contribución de cada
cifra no depende del lugar que ocupa.
Un ejemplo de este sistema serían los números romanos:
La combinación XXI equivale a 21. Podemos ver cómo la cifra X aparece
dos veces y siempre tiene el mismo valor: 10 unidades, independientemente
de su posición.
El inconveniente que tienen estos sistemas es que para escribir valores
numéricos grandes son necesarios muchos símbolos, y además resulta
difícil efectuar operaciones aritméticas con ellos, cosa que no sucede con
los posicionales.
Los sistemas de numeración que veremos a continuación son todos
sistemas posicionales.
A partir de ahora, para evitar confusiones, cuando expresemos un valor
numérico pondremos un subíndice al final indicando la base en la que se
expresa dicho valor, salvo que por el contexto quede suficientemente claro:
22510
110112
=
=
Base decimal
Base binaria
2
Estructura de computadores
Tema 2: Sistemas de representación numérica
Sistema decimal
Es el sistema que utilizamos habitualmente las personas.
Base:
Alfabeto:
10
0,1,2,3,4,5,6,7,8,9
Cumple la fórmula anterior (B=10):
N = An·10n + An-1·10n-1 + ... + A 1·101 + A 0·100
Ejemplo:
22510 = 2·102 + 2·101 + 5·100 = 200 + 20 + 5
3
Estructura de computadores
Tema 2: Sistemas de representación numérica
Sistema binario
Es el sistema utilizado por los computadores.
Base:
Alfabeto:
2
0,1
Este sistema, presenta el inconveniente de que necesita muchas cifras para la
representación de un número grande, y es muy engorroso para un humano.
Sin embargo, el sistema binario es el más adecuado a las máquinas
electrónicas por varias razones:
1. La mayor parte de las computadoras existentes representan la
información y la procesan mediante elementos y circuitos
electrónicos de dos estados (relés, núcleos de ferrita, etc.).
2. Por la seguridad y la rapidez de respuesta de los elementos físicos
de dos estados diferenciados (ON / OFF).
3. Las operaciones aritméticas son sencillas.
Los quince primeros números binarios se escriben:
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
4
Estructura de computadores
Tema 2: Sistemas de representación numérica
Conversión binario-decimal
La forma más sencilla de realizar esta conversión es desarrollando la
fórmula que vimos para los sistemas posicionales (suma de potencias de la
base).
N = An·Bn + A n-1·Bn-1 + ... + A 1·B1 + A 0·B0
Donde A i son las distintas cifras del valor numérico e ‘i’ su posición.
B=2
Ejemplo 1:
Dado el número binario: “10112”, encontrar el equivalente decimal.
Si desarrollamos el número dado como potencias de 2 tendremos:
10112 = 1·2 3 + 0·2 2 + 1·2 1 + 1·2 0 = 1·8 + 0·4 + 1·2 + 1·1 =
= 8 + 2 + 1 = 1110
Ejemplo 2:
Ahora vamos a realizar lo mismo pero con cifras decimales.
Dado el número binario: “1011,0112”, encontrar el equivalente decimal.
1011,0112 = 1·2 3 + 0·2 2 + 1·2 1 + 1·2 0 + 0·2 -1 + 1·2 -2 + 1·2 -3 =
= 1·8 + 0·4 + 1·2 + 1·1 + 0·1/2 + 1·¼ + 1·1/8 = 11,375
Conversión decimal-binario
Una forma de realizar esta conversión sería separar la parte entera de la
parte fraccionaria, y operar del siguiente modo:
1. La parte entera se divide tantas veces como sea posible por la base
(2), hasta que el cociente sea 0 o 1. El último cociente y los restos
obtenidos, al escribirlos en orden inverso a su obtención, nos dan el
resultado.
2. La parte fraccionaria se multiplica por la base (2); la parte entera
obtenida (0..1) representa la cifra binaria. Se procede de forma
iterativa con la parte fraccionaria que nos vaya quedando, hasta que
sea 0 o veamos que el resultado será periódico o infinitas cifras
decimales. El resultado será la unión de las partes enteras, en el
orden que las hemos obtenido.
5
Estructura de computadores
Tema 2: Sistemas de representación numérica
Ejemplo 1:
Vamos a obtener el equivalente binario del valor decimal: 1110
En este caso tan sólo tenemos parte entera.
11 |__2__
1
5 |__2__
1
2 |__2__
0
1
Según esto, el equivalente será:
1110 = 10112
Puede comprobarse el resultado con los ejemplos anteriores.
Ejemplo 2:
Expresar el número decimal 109,62510 en el sistema binario.
Parte entera
109 |__2__
Obtenemos el valor 11011012
1 54 |__2__
0
27 |__2__
1
13 |__2__
1
6 |__2__
0
3 |__2__
1
1
Parte fraccionaria
0,625 * 2 = 1,250
0,250 * 2 = 0,5
0,5 * 2 = 1,0
Obtenemos el valor: 1012
El resultado final es la unión de ambos valores:
109,62510 = 1101101,1012
6
Estructura de computadores
Tema 2: Sistemas de representación numérica
Sistema Octal
Base:
Alfabeto:
8
0,1,2,3,4,5,6,7
El interés de este sistema proviene de que su conversión al binario
resulta sencilla, por ser 8 = 2 3.
Se usa bastante con listados de programas y volcados de memoria
(dump), pues permite impresiones mucho más compactas que con el sistema
binario, ya que cada dígito octal equivale a 3 dígitos binarios.
Los ocho primeros números octales se escriben:
Octal
0
1
2
3
4
5
6
7
Decimal
0
1
2
3
4
5
6
7
Binario
000
001
010
011
100
101
110
111
Conversión octal-binaria
Para convertir un número expresado en base 8 a base 2, simplemente
sustituimos cada una de las cifras que lo forman por sus tres cifras binarias
equivalentes.
Ejemplo:
375,4210 = 011 111 101,100 010
Conversión binaria-octal
Se realiza a la inversa, comenzando desde la coma decimal hacia la
izquierda para la parte entera, rellenando con 0’s a la izquierda si fuera
necesario; y desde la coma decimal hacia la derecha para la parte fraccionaria,
rellenando con 0’s a la derecha si fuera necesario.
Ejemplo 1:
11111101,1000102 = 011 111 101,100 0102 = 375,4210
Ejemplo 2:
11010,10112 = 011 010,101 1002 = 32,5410
7
Estructura de computadores
Tema 2: Sistemas de representación numérica
Conversión octal-decimal
Se realiza del mismo modo que de binario a decimal, teniendo en cuenta
que la base ahora es B=8.
Ejemplo:
345,5 8 = 3·8 2 + 4·8 1 + 5·8 0 + 5·8 -1= 192 + 32 + 5 + 0,625 = 229,62510
Conversión decimal-octal
Se realiza del mismo modo que de decimal a binario, dividiendo la parte
entera de forma sucesiva por la base B=8, y multiplicando la parte fraccionaria
por la base.
Ejemplo:
Expresar el número decimal 1036,3510 en octal.
Parte entera
1036 |__8__
El resultado será: 103610 = 20148
23
129 |__8__
76
49
16 |__8__
4
1
0
2
Parte fraccionaria
0,35 * 8 = 2,8
0,8 * 8 = 6,4
0,4 * 8 = 3,2
0,2 * 8 = 1,6
0,6 * 8 = 4,8
Obtenemos el valor: 26314...8
El resultado final es la unión de ambos valores:
1036,3510 = 2014,26314...8
8
Estructura de computadores
Tema 2: Sistemas de representación numérica
Sistema Hexadecimal
Base:
Alfabeto:
16
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
El interés de este sistema proviene de que su conversión al binario
resulta sencilla, por ser 16 = 24. Esto significa que cada grupo de 4 bits (dígitos
en binario), equivale a uno solo en hexadecimal, con lo cual, obtendremos
representaciones mucho más compactas.
Conversión hexadecimal-binario
Basta con sustituir cada símbolo hexadecimal por su equivalente en
binario, según se indica en la tabla siguiente:
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Ejemplo:
Hállese el equivalente binario del número 9A7E16
9A7E16 = 1001 1010 0110 11102
Conversión binario-hexadecimal
La conversión de un número binario a hexadecimal se realiza a la
inversa: se forman grupos de cuatro cifras binarias a partir de la coma decimal,
hacia la izquierda y hacia la derecha, y se sustituye cada grupo por su
equivalente hexadecimal. Si el grupo final de la izquierda queda incompleto, se
rellena con 0’s por la izquierda. Del mismo modo, si el grupo final de la derecha
queda incompleto, se rellena con 0’s por la derecha.
9
Estructura de computadores
Tema 2: Sistemas de representación numérica
Ejemplo:
Calcúlese el equivalente hexadecimal del número binario siguiente:
1101010111100011100000001,1100012
Agrupamos y rellenamos con 0’s:
0001 1010 1011 1100 0111 0000 0001,1100 01002
Sustituimos cada grupo de 4 por su equivalente hexadecimal:
1
A
B
C
7
0
1 , C 4
Resultado:
1ABC701,C416
Conversión hexadecimal-decimal
La conversión se realiza siguiendo el mismo procedimiento que en las
conversiones binario-decimal, pero considerando la base B=16. En este caso,
además, deberemos sustituir los valores A..F por su equivalencia en el sistema
decimal.
Ejemplo:
Hállese el equivalente decimal del valor hexadecimal 39,B816.
39,B816 = 3·161 + 9·160 + B·16-1 + 8·16-2 =
= 3·161 + 9·160 + 11·16-1 + 8·16-2 =
= 48 + 9 + 0.6875 + 0.03125 =
= 57,71875
Conversión decimal-hexadecimal
Procederemos del mismo modo que en la conversión decimal-binario,
considerando B=16. Dividiremos la parte entera sucesivamente por la base, y
la parte fraccionaria la multiplicaremos por la base.
Ejemplo:
Hállese el equivalente hexadecimal del número 4573,7910.
Parte entera
4573 |_16__
13 285 |_16__
13
17 |_16__
1
1
457310 = 11DD16
10
Estructura de computadores
Tema 2: Sistemas de representación numérica
Parte fraccionaria
0,79 * 16 = 12,64
0,64 * 16 = 10,24
0,24 * 16 = 3,84
0,84 * 16 = 13,44
0,44 * 16 = 7,04
...
Valor final:
Valor: 12 10 3 13 7... = CA3D7...16
4573,CA3D7...16
Conversiones de cualquier base
Conversión de una base cualquiera a base decimal (b => 10)
Para este tipo de conversión utilizaremos la fórmula de la suma de
productos de potencias de la base vista anteriormente.
Ejemplo: Hallar el equivalente decimal del valor 1312,3 4
1312,3 4 = 1·4 3 + 3·4 2 + 1·4 1 + 2·4 0 + 3·4 -1 =
= 64 + 48 + 4 + 2 + 0.75 = 118,7510
Conversión de base decimal a otra base cualquiera (10 => b)
Se realiza como hemos visto hasta ahora, es decir:
•
Parte entera: dividiendo el número decimal por la base a la que
queremos convertir, de forma sucesiva hasta que el cociente sea
menor que la base. El último cociente y los restos que resultan de
todas las divisiones en orden inverso a su obtención es el resultado
final.
•
Parte fraccionaria: multiplicando sucesivamente por la base,
cogiendo las partes enteras como parte del resultado.
11
Estructura de computadores
Tema 2: Sistemas de representación numérica
Ejemplo: Expresar el número decimal 545,6710 en base 5
Parte entera
545 |__5__
0 109 |__5__
4
21 |_ 5__
1
4
54510 = 41405
Parte fraccionaria
0,67 * 5 = 3,35
0,35 * 5 = 1,75
0,75 * 5 = 3,75
0,75 * 5 = 3,75
...
Valor final:
Valor: 3 1 3 3 ... = 3133...5
4140,3133...5
Conversión de una base b 1 a otra b 2
Para realizar este tipo de conversiones desde una base que no sea la
decimal a otra que tampoco lo sea seguimos dos pasos:
• Convertir el valor en base b1 a base decimal
• Convertir de base decimal a b2
Estas conversiones las haremos según los apartados anteriores.
Valor en b1 ⇒ Valor intermedio en base 10 ⇒ Valor final en b2
Ejemplo: Expresar el valor 13189 en base 7.
•
Convertimos a decimal (base 10):
13189 = 1·9 3 + 3·9 2 + 1·9 1 + 8·9 0 = 729 + 243 + 9 + 8 = 98910
•
Convertimos a base 7:
989 |__7__
2 141 |__7__
1 20 |__7__
6
2
98910 = 26127
12
Estructura de computadores
Tema 2: Sistemas de representación numérica
Conversiones de base con números no enteros:
Cuando trabajamos con números no enteros tenemos parte entera y
parte fraccionaria.
Hemos visto que para convertir de decimal a cualquier otra base
tenemos que realizar dos procesos cuando tenemos cifras decimales; la parte
entera y la parte fraccionaria.
La parte entera es sencilla, como hemos visto hasta ahora. Para la parte
fraccionaria debemos tener en cuenta las siguientes consideraciones.
Dependiendo del tipo de número que tengamos podemos tener las
siguientes posibilidades.
1
Racionales
1.1 Cifras decimales no periódicas
Procedemos como hemos visto hasta ahora, es decir, multiplicando
sucesivamente por la base y nos quedamos con la parte entera.
0,615 x 2 = 1,250
0,250 x 2 = 0,500
0,500 x 2 = 1
Por tanto: 0,62510 = 0,1012
NOTA: el hecho de que un número N tenga un número finito de
decimales en una base no implica que en otra base sea así (p.e. 0,82510)
1.2 Cifras decimales periódicas
Tenemos que expresarlo en forma de fracción equivalente
irreducible, después la expresaremos en binario (base 2) (numerador
y denominador) y haremos la división en binario.
_
0,666... = 0,6 (periódico)
•
Fracción irreducible:
_
x = 0,6
_
1 · x = 0,6
_
10 · x = 6,6
_
_
10·x - 1·x = 6,6 - 0,6 = 6
(Lo llamamos x)
(La parte periódica detrás de la coma: ya está)
(Desplazando el número de cifras periódicas)
(Restando ambas expresiones)
13
Estructura de computadores
Tema 2: Sistemas de representación numérica
x=6/9=2/3
(Fracción equivalente e irreducible)
_
Se puede comprobar que: 2 / 3 = 0,6
•
Expresarlo en binario:
•
Finalmente, hacer la división binaria:
102 / 112
10 0 |__11__
- 11
0, 100100 ...
-----0 0100
102 / 112 = 0,100 100 ...
Otros ejemplos:
__
x = 0,07954
(Lo llamamos x)
__
1000 · x = 79,54
(La parte periódica detrás de la coma)
__
1000 00 · x = 7954,54
(Desplazando el número de cifras periódicas)
__
__
1000 00·x - 1000·x = 7954,54 - 79,54 = 7875
(Restando ambas expresiones)
x = 7875 / 99000 = 7 / 88
(Fracción equivalente e irreducible)
__
Se puede comprobar que: 7 / 88 = 0,07954
__
x = 0,563
(Lo llamamos x)
__
10·x = 5,63
(La parte periódica detrás de la coma)
__
1000·x = 563’63
(Restando ambas expresiones)
__
__
1000·x - 10·x = 563,63 - 5,63 = 558
(Restando ambas expresiones)
x = 558 / 990 = 279 / 495
(Fracción equivalente e irreducible)
__
Se puede comprobar que: 279 / 495 = 0,563
•
En la práctica lo que se hace para obtener la fracción equivalente
es tomar el número como un entero, le restamos la parte no periódica
y se divide por tantos 9’s como el número de cifras periódicas y
tantos 0’s como las no periódicas.
14
Estructura de computadores
2
Tema 2: Sistemas de representación numérica
Irracionales
Tienen infinitas cifras decimales que no se repiten. Los tratamos como
racionales, pero tenemos que considerar que trabajamos con errores, es
decir, los resultados serán aproximados.
El proceso es similar a los racionales no periódicos, solo que en este
caso, necesitamos conocer el número de cifras decimales con las que
nos vamos a quedar.
Supongamos el número PI = 3,141592653 ... (infinitas cifras decimales)
Vamos a considerar que el número PI = 3,1416 (redondeado a 4 cifras)
Al hacer esto estamos cometiendo un error E1 ≤ 10-4
Al convertirlo al sistema binario cometemos otro error E2, tal que:
E2 ≤ E1
Para determinar el número de cifras fraccionarias binarias necesarias
para que se cumpla la desigualdad anterior hacemos lo siguiente:
Sabemos que:
Del mismo modo:
Debe complirse:
Sustituyendo:
Tomamos logaritmos:
E1 ≤ 10-4
E2 ≤ 2-n, donde n = número de cifras fraccionarias.
E2 ≤ E1
2-n ≤ 10-4.
Log10 2-n ≤ Log10-4 ⇒ -n·Log10 2 ≤ -4·Log10 10 ⇒
-n·Log10 2 ≤ -4 ⇒ -n ≤ (-4 / Log10 2) ⇒
n > (4 / Log10 2) ⇒ n > 13,28
Por tanto, necesitaremos al menos 14 cifras decimales en la parte fraccionaria
para no cometer más error al convertir a binario.
0,1416 x 2 = 0,2832
0,2832 x 2 = 0,5664
0,5664 x 2 = 1,1328
0,1328 x 2 = 0,2656
0,2656 x 2 = 0,5312
0,5312 x 2 = 1,0624
0,0624 x 2 = 0,1248
Por tanto, el resultado será:
0,1248 x 2 = 0,2496
0,2496 x 2 = 0,4992
0,4992 x 2 = 0,9984
0,9984 x 2 = 1,9968
0,9968 x 2 = 1,9936
0,9936 x 2 = 1,9872
0,9872 x 2 = 1,9744
3,141610 = 11,001001000011112
(con un error E ≤ 10-4).
15
Estructura de computadores
Tema 2: Sistemas de representación numérica
2.2 Aritmética binaria
La aritmética binaria es básica en las computadoras digitales
Las operaciones aritméticas que vamos a ver son las mismas que para
el sistema decimal:
• suma
• resta
• multiplicación
• división, para la base binaria
Suma
La tabla de adición siguiente nos muestra las 4 reglas básicas para
sumar dígitos binarios:
Valor 1
0
0
1
1
Valor 2
0
1
0
1
Suma
0
1
1
0
Acarreo
0
0
0
1
En el último caso tenemos un acarreo, que se sumará en la cifra
siguiente. Entonces tendremos que sumar 3 bits, los dos de las dos cifras
binarias que estamos sumando y el bit de acarreo. Si ambos son 1, al sumarle
el acarreo, obtendremos 1 y volveremos a tener un acarreo.
Ejemplo: Sumar los valores binarios 110011101 y 10110111.
110011101
+ 10110111
--------------------------10 01010100
16
Estructura de computadores
Tema 2: Sistemas de representación numérica
Resta
La sustracción binaria utiliza las siguientes reglas:
Valor 1
0
0
1
1
Valor 2
0
1
0
1
Resta
0
1
1
0
Acarreo
0
-1
0
0
En el segundo caso, lo que haremos será prestar un 1 de la siguiente
columna, o la primera que no sea 0, sustituyendo todos los 0 por 1 desde esa
columna hasta la columna actual (todo esto es en el minuendo).
Ejemplo: Efectuar la diferencia 11101 – 1011.
modificaciones en el minuendo:
0
11101
- 1011
-----------------10010
minuendo:
substraendo:
29
- 11
------18
Ejemplo: Efectuar la diferencia 11000 – 10011.
modificaciones en el minuendo:
0 1 1
11000
- 10011
------------------00101
minuendo:
substraendo:
24
- 19
---------5
En el caso de que tengamos cifras decimales, lo primero que debemos
hacer es alinear verticalmente las comas binarias antes de efectuar la resta y
rellenar con ceros a la derecha de los números para ajustar las partes
fraccionarias a un mismo número de dígitos.
Ejemplo: Efectuar la diferencia 1101,101 – 11,10111.
modificaciones en el minuendo:
0 1 0
minuendo:
substraendo:
-
0 1 0 1
1101,10100
11,10111
----------------------------1 0 0 1 , 1 11 01
17
Estructura de computadores
Tema 2: Sistemas de representación numérica
También podría hacerse como hacemos en el sistema decimal, sumando
los acarreos negativos a la siguiente columna del sustraendo, es decir, en vez
de realizar modificaciones en el minuendo, realizaremos modificaciones en el
sustraendo. Cuando sumemos un acarreo, si en la siguiente columna tengamos
un 1, se produce un nuevo acarreo y seguimos sumando dicho acarreo a la
siguiente columna, hasta llegar a un bit 0.
minuendo:
substraendo:
modificaciones en el sustraendo:
-
1101,10100
11 ,10111
1 0 0
0 1 0 0
----------------------------1 0 0 1 , 11 1 01
18
Estructura de computadores
Tema 2: Sistemas de representación numérica
Multiplicación
La multiplicación de 2 bits sigue las siguientes 4 reglas:
Valor 1
0
0
1
1
Valor 2
0
1
0
1
Multiplicación
0
0
0
1
La multiplicación de números binarios se realiza de la misma forma que
con números decimales. Se realizan los productos parciales, desplazando cada
producto parcial una posición a la izquierda, y luego se suman dichos
productos.
Es aun más sencilla que con números decimales, ya que en binario tan
sólo tenemos dos dígitos: 0 y 1. Cuando multiplicamos por 0 obtenemos 0, y
cuando multiplicamos por 1 obtenemos el mismo número.
Ejemplo: Calcular el producto 1100 x 1011.
1100
x 1011
--------------1100
1100
0000
+1100
---------------------10000100
12
x 11
-------132
En el caso de que tengamos cifras decimales, la multiplicación se realiza
exactamente igual, y al final, el número de posiciones decimales en el número
resultante del producto es la suma del número de cifras decimales de los
números que se están multiplicando.
Ejemplo: Calcular el producto binario 11,01 x 101,1.
11,01
x 101,1
-------------1101
1101
0000
1101
--------------------1 0 0 0 1,1 1 1
3,25
x 5,5
------------1 6 25
1625
------------1 7,8 7 5
19
Estructura de computadores
Tema 2: Sistemas de representación numérica
División
El algoritmo utilizado por la división binaria se reduce a sustracciones
repetidas del divisor.
Las reglas utilizadas son las siguientes:
Valor 1
0
0
1
1
Valor 2
0
1
0
1
División
No definido
0
Imposible
1
Ejemplo: Efectuar la división 1 1 1 0 1 1 1 / 1 0 0 1
0
1 1 1 0 1 1 1 |_1 0 0 1_
-1001
1101
-----------01011
-1001
-----------0 0 1 011
-1001
-----------0010
1 1 9 |__9__
- 9
13
-----29
-27
------2
En el caso de fracciones binarias se trata de la misma forma que la
división de fracciones decimales, es decir, se convierte el divisor en un entero
desplazando la coma binaria a la derecha; el dividendo se desplaza el mismo
número de posiciones.
Ejemplo: Realizar la división 111,00001 / 1,01
1 1 1 0 0 , 0 0 1 |__1 0 1___
-101
101101
--------011
01000
01000
- 101
- 101
-----------------------0110
011
-101
---------00101
- 101
-----------000
7,03125 / 1,250 = 5,625
0
110
- 101
-----------001
20
Estructura de computadores
Tema 2: Sistemas de representación numérica
El resultado final será el cociente pero cogiendo tantas cifras decimales
como tenga el dividendo, después de haber desplazado la coma. En este caso
son 3. Por tanto, el resultado es: 101,101.
NOTA: Los computadores utilizan una forma de representación de los números
negativos llamada “complemento”, que nos facilita la realización de las
operaciones de resta, ya que utiliza circuitos sumadores. La veremos en el
siguiente apartado.
21
Estructura de computadores
Tema 2: Sistemas de representación numérica
2.3 Representación
computadoras
de
la
información
en
las
En las computadoras, la información se procesa por conmutación y
almacenamiento de señales eléctricas. Se utiliza el sistema binario por la
facilidad y estabilidad que tiene representar dos estados lógicos diferenciados.
Dependiendo de las familias lógicas utilizadas, se utiliza un valor de
tensión para representar el “0” lógico y otro valor para el “1” lógico. No se trata
de un valor exacto, sino de un margen.
•
•
•
Familia TTL:
Familia CMOS:
Familia ECL (lóg.neg.):
“0” = 0,2 v
/ “1” = 3,3 v
“0” = 0..3 v / “1” = 7..10 v
“0” = -0,75 v / “1” = -1,5 v
Los dígitos binarios se suelen transmitir y recibir como una sucesión de
impulsos. Existen dos técnicas para distinguir entre los dos estados lógicos:
•
Con retorno a cero (RZ): un impulso positivo representa un “1” y un
impulso negativo representa un “0”.
1
1
1
0
•
Sin retorno a cero (NRZ): el “0” se representa por ausencia de
impulso, y el “1” se representa por un impulso. Lógicamente, los
circuitos receptores deben mantenerse sincronizados con la señal.
1
1
0
1
22
Estructura de computadores
Tema 2: Sistemas de representación numérica
Números con signo
Los sistemas digitales deben ser capaces de manejar números positivos
y negativos. Un número binario con signo queda determinado por su magnitud
(valor) y su signo (positivo/negativo).
El símbolo “-“ del sistema decimal no se puede representar en binario.
Debido a esto, existen 3 formatos de representación de números con signo:
•
•
•
Signo-magnitud:
Complemento a la base
Complemento a la base menos uno
En todos ellos, el signo del número viene representado por un bit
adicional, el “Bit de signo”, que se coloca en el extremo izquierdo del número
binario con signo. Se utiliza el siguiente convenio:
“0”: signo positivo
“1”: signo negativo
Método signo-magnitud
Se trata de reservar el bit del extremo izquierdo (MSB) como bit de
signo; los restantes representan el valor numérico del número en formato
binario (magnitud).
n bits
Bs
1 bit
Magnitud
(n-1) bits
Por ejemplo, para n=8:
+1110 = 0 000 1011
- 1110 = 1 000 1011
En un registro de n bits, los números que pueden representarse serán 0
.. 2 -1. En total 2 n números.
Al utilizar el primer bit como bit de signo, no se reduce la cantidad de
números que se pueden representar (2n), pero si el valor mínimo y máximo,
pues en vez de tener n bits para la magnitud ahora tendremos n-1 bits. Por
tanto, el rango de valores que podremos representar en signo-magnitud es:
n
-(2n-1-1) .. 0 .. +(2n-1-1)
Esta representación presenta ciertos inconvenientes:
•
•
•
Pues para cualquier operación aritmética debemos comprobar
primero el signo, para después sumar o restar en función del mismo.
El diseño de circuitos lógicos que realicen operaciones aritméticas
con números binarios en signo-magnitud no es fácil.
Tenemos dos representaciones para el número 0:
+010 = 0 000 0000
-010 = 1 000 0000
23
Estructura de computadores
Tema 2: Sistemas de representación numérica
Método del complemento
La utilización de números complementados es un concepto
especialmente útil para simplificar la resta, pues permite realizarla utilizando
circuitos sumadores.
Los números positivos en este sistema se representan de la misma
forma que los números positivos en formato signo-magnitud, simplemente se
añade un 0 como bit de signo a la magnitud del número. El número 0 se
identifica como positivo y tiene por tanto un bit de signo 0 y una magnitud de
todos ceros.
Los números negativos son el complemento del correspondiente
número positivo.
Existen dos variantes en la forma de complemento: el complemento a la
base y el complemento a la base menos uno.
NOTA: Cuando hay decimales, se quita la coma, se hace el
complemento correspondiente y de nuevo se coloca la coma.
Complemento a la base
El complemento a la base de un número ‘a’ de n cifras es el valor:
Cb = bn – |a|
con b = base del sistema
n = número de dígitos incluido el signo
|a| = valor absoluto del número
Para el sistema binario recibe el nombre de complemento a 2 o
complemento verdadero:
b=2 => C 2 = 2n – |a|
Complemento a la base menos 1
El complemento a la base menos 1 de un número ‘a’ es el valor:
Cb-1 = bn – 1 – |a|
b = base del sistema
n = número de dígitos incluido el signo
|a| = valor absoluto del número
Para el sistema binario recibe el nombre de complemento a 1 o
complemento restringido:
b=2 => C 1 = 2n – 1 – |a|
24
Estructura de computadores
Tema 2: Sistemas de representación numérica
Ejemplo: considerando la base decimal (b=10), obtener los complementos a la
base (C 10) y a la base menos uno (C 9):
a = 2310
Tenemos 2 dígitos (n = 2)
C10: -2310 = 102 – |a|
= 100 – 23
= 77C10
2
C9 : -2310 = 10 – 1 – |a| = 100 – 1 – 23 = 76C9
a = 125810
Tenemos 4 dígitos (n = 4)
C10: -125810 = 104 – |a|
= 10000 – 1258
= 8742C10
4
C9 : -125810 = 10 – 1 – |a| = 10000 – 1 – 1258 = 8741C9
Ejemplo: considerando la base binaria (b=2) y 8 dígitos (n=8), obtener el
correspondiente C 1 y C2 de los siguientes valores:
a = 1010 = 0000 10102
C2: -1010 = 28 – |a| = 1 0000 0000 – 0000 1010 = 1111 0110C2
0111111
100000000
- 00001010
-------------------------11110110
C1: -1010 = 28 – 1 – |a| = 1 0000 0000 – 1 – 0000 1010 =
= 1111 1111 – 0000 1010 =
= 1111 0101C1
11111111
- 00001010
----------------------11110101
En la práctica, y SOLO para el sistema binario (b=2):
•
•
El complemento a 1 se obtiene directamente sin más que cambiar
en el número todos los 0’s por 1’s y viceversa.
El complemento a 2 se obtiene sumando 1 al complemento a 1.
Aplicando esta regla en el ejemplo anterior obtenemos los mismos resultados:
a = 1010 = 0000 10102
C1 = 1111 0101
C2 = 1111 0101 + 1 = 1111 0110
Podemos comprobar que los números negativos siempre tienen el bit de signo
(MSB) a 1, y los positivos a 0.
25
Estructura de computadores
Tema 2: Sistemas de representación numérica
Operaciones aritméticas de números con signo
Suma
Cuando se suman dos números binarios A y B (A+B) pueden producirse
cuatro casos:
•
•
•
•
A y B son positivos
⇒ A+B ≥ 0
A y B son negativos
⇒ A+B < 0
A es positivo y B negativo, con A > |B| ⇒ A+B ≥ 0
A es positivo y B negativo, con |B| > A ⇒ A+B < 0
En cualquier caso, el procedimiento de la suma es muy sencillo: sumar los
dos números y descartar el bit de acarreo final (si lo hay).
Ejemplos: Consideremos números con signo de 8 bits (n=8).
•
A y B son positivos (A=7, B=4)
710 = 0000 0111
410 = 0000 0100
00000111
+00000100
----------------------0 0001011
•
7
+4
-----11
A y B son negativos (A=-5, B=-9)
510 = 0000 0101
910 = 0000 1001
11111011
+11110111
-----------------------1 1 1 1 1 0 010
C2 = 1111 1010 + 1 = 1111 1011
C2 = 1111 0110 + 1 = 1111 0111
-5
+ -9
-------14
En este caso tenemos acarreo, que descartamos. Como la suma es
negativa, el resultado está en C2.
26
Estructura de computadores
Tema 2: Sistemas de representación numérica
Para comprobar el resultado: C2 = b n – |a| => |a| = bn – C2.
|a| = 28 – C2 = 1 0000 0000 – 1111 0010
Mod. minuendo:
01 11 1 11
100000000
- 11110010
-----------------------0 0 0 0 1 1 1 0 ==> |a| = 14 ==> a = -14
•
A es positivo y B negativo, con A > |B| (A=15, B=-6)
1510 = 0000 1111
610 = 0000 0110
00001111
+11111010
----------------------100001001
C2 = 1111 1001 + 1 = 1111 1010
15
+ -6
------9
Como siempre, el bit de acarreo se desprecia.
•
A es positivo y B negativo, con |B| > A (A=16, B=-24)
1610 = 0001 0000
2410 = 0001 1000
C2 = 1110 0111 + 1 = 1110 1000
00010000
+11101000
----------------------11111000
16
+ -24
--------8
Cuando se suman dos números y el número de bits requerido para representar
la suma excede al número de bits de los dos números, se produce un
desbordamiento (overflow), que se indica mediante un bit de signo incorrecto
(p.e. negativo cuando A y B son positivos).
27
Estructura de computadores
Tema 2: Sistemas de representación numérica
Resta
El mecanismo es cambiar el signo al sustraendo y sumar al minuendo:
a – b = a + (-b)
La forma de cambiar el signo al sustraendo es mediante la
complementación (C1 ó C2).
Complemento a 1 (C1)
Utilizando la forma de C1 se puede convertir la operación de resta de
dos números binarios en una operación de suma. La forma de operar consiste
en calcular el C1 del sustraendo y sumarlo al minuendo.
Tenemos dos posibilidades
•
Si se produce acarreo, éste se suma al bit menos significativo de la
suma (acarreo circular), para corregir el error que se produce.
•
Si no hay acarreo: el resultado es negativo y la solución se obtiene
complementando a 1 el resultado de la suma.
Ejemplo: Calcular la diferencia 11001 – 10110, utilizando C1.
Resta ordinaria:
Utilizando C1:
01
11001
- 10110
----------------00011
1
1
110 01
+01001
---------------1 0 0 0 1 0 Acarreo
+
1
---------------00011
El C1 tiene la ventaja de que es sencillo de diseñar un circuito, pues tan
solo necesita un inversor para cada bit, que se colocarán en paralelo y serán
los bits de entrada de un circuito sumador.
Pero el C1 tiene dos inconvenientes:
•
•
Hay dos formas de expresar el cero (+0 y -0):
+0 = 00 .. 00
-0 = 11 .. 11
La resta de dos números no es válida cuando son iguales (el
resultado es –0 (cero negativo).
Con el C2 se eliminan estos problemas.
28
Estructura de computadores
Tema 2: Sistemas de representación numérica
Complemento a 2 (C2)
Del mismo modo que en C1, calculamos el C2 del substraendo y lo
sumamos al minuendo.
También tenemos dos posibilidades:
•
Si se produce acarreo: éste se desprecia (al contrario que con C1).
•
Si no hay acarreo: el resultado es negativo y la solución se obtiene
complementando a 2 el resultado de la suma.
Ejemplo: Calcular la diferencia binaria 1012 – 110112.
Resta ordinaria:
Utilizando C1:
Utilizando C2:
00101
+00100
---------------001001
00101
+00101
---------------001010
0
11011
- 00101
---------------10110
(Cambiamos el
signo al final)
Res: -10110
(Como no hay
acarreo => C1)
Res: -10110
(Como no hay
acarreo => C2)
Res: -10110
Resta ordinaria: como el sustraendo es menor que el minuendo,
hacemos la resta poniendo el mayor como sustraendo, pero luego debemos
poner el resultado como negativo.
Utilizando C1 y C2: como no hay acarreo, hacemos el C1/C2, y por
tanto, el resultado es negativo.
29
Estructura de computadores
Tema 2: Sistemas de representación numérica
Si consideramos la base decimal, la forma de operar sería la misma,
teniendo que obtener el C9 o C10.
Ejemplo: Calcular la diferencia 30010 – 298,6410 = 1,3610, utilizando C9 y C10:
a = 298,6410
a’ = 2986410 (sin coma decimal)
Utilizando C10:
C10: 105 – |a’| = 100000 – 29864 = 70136
300
+ 701,36
--------------1001,36
C10 = 701,36
à
Bit de acarreo se desprecia: 1,36
C10: 103 – |a| = 1000 – |a| = 1000 – 298,64 = 701,36
300
+ 701,36
--------------1001,36
à
Bit de acarreo se desprecia: 1,36
Utilizando C9:
C9:
105 – 1 – |a’| = 100000 – 1 – |a| = 99999 – 29864 = 70135
300
+ 701,35
--------------1001,35
+
1
--------------1,36
C9:
C9 = 701,35
à
Bit de acarreo se suma al resultado
103 – 1 – |a| = 1000 – 1 – |a| = 999 – 298,64 = 700,36
300
+ 700,36
--------------1000,36
+
1
--------------0,37
¡ MAL HECHO !
à
Bit de acarreo se suma al resultado
RECUERDA: Para calcular el complemento (cualquiera), cuando hay
decimales, se quita la coma, se hace el complemento correspondiente y de
nuevo se coloca la coma.
30
Estructura de computadores
Tema 2: Sistemas de representación numérica
Multiplicación y División
En ambos casos realizaremos la operación sin tener en cuenta el signo
de los dos números binarios, y posteriormente le aplicaremos el signo, teniendo
en cuenta:
•
Si los dos son del mismo signo:
resultado positivo.
•
Si los dos son de diferente signo:
resultado negativo.
31