Un sistema de numeración es un conjunto de símbolos y reglas de generación que
permiten construir todos los números válidos en el sistema. Un sistema de numeración puede
representarse como N = S + R donde:
• N es el sistema de numeración considerado.
• S son los símbolos permitidos en el sistema. En el caso del sistema decimal son
{0,1...9}; en el binario son {0,1}; en el octal son {0,1...7}; en el hexadecimal son
{0,1...9,A,B,C,D,E,F}.
• R son las reglas de generación que nos indican qué números son válidos y cuáles son
no-válidos en el sistema.
Estas reglas son diferentes para cada sistema de numeración considerado, pero una regla
común a todos es que para construir números válidos en un sistema de numeración
determinado sólo se pueden utilizar los símbolos permitidos en ese sistema (para indicar el
sistema de numeración utilizado se añade como subíndice al número).
De una forma general y amplia podemos clasificar los sistemas de numeración en dos
grandes tipos:
Posicionales: El valor de los símbolos que componen el sistema depende del valor que se les
ha asignado, y de la posición que ocupan en el número (Números decimales).
No Posicionales: El valor de los símbolos que componen el sistema es fijo, y no depende de
la posición que ocupa el símbolo dentro del número (Números romanos).
RANGO DE UN NUMERO
Cuando se representan números en una base b y m dígitos, hay bm números posibles en un
rango de 0....bm-1.
Sea Nb un número entero cualquiera, éste tendrá un equivalente decimal que caerá en el
rango 0...bm-1, y podrá ser representado exactamente como muestra la Fig. 1.1
Sea:
b: base
m: número de dígitos
Entonces habrá bm números en el rango [0 ..... bm–1 ]
* Números Enteros
|__________|_________|__________| b=2
00 01 10 11 m=2
Nb = 012 =110
(Figura 1.1).
Truncación
Se dice que una fracción es truncada cuando todos los dígitos a la derecha de a-m se
desprecian.
< -------@--------------->
|______...__________|___________.______|________.....
0 fv Fb fv+1
<---Et----->
Figura 1.3
fv: valor truncado
Fb: valor real
Et: error por truncación (Et < b-m).
CONVERSION DE SISTEMAS NUMERICOS
Las conversiones más importantes son: decimal-binario, decimal-octal y decimalhexadecimal,
ya que cualquier otra conversión entre esos cuatro sistemas se puede realizar
como una combinación de los anteriores. En muchos casos, la conversión de un número
fraccionario finito, expresado en un sistema numérico de base b1, no produce un número
fraccionario finito equivalente en una base b2. El error entre ambas representaciones lo
determina el número de dígitos empleados en la representación en la base b2.
Conversión Decimal-Binario
La conversión de números enteros y fraccionarios decimales en binarios, se lleva a cabo por
sucesivas divisiones y multiplicaciones, respectivamente, por la base (2).
Números Enteros
Como resultado de la división de un número decimal por dos, se obtiene un cociente Q y un
resto R. Los restos que se obtienen de las sucesivas divisiones son los bits del número
binario. El resto R es siempre un número entero menor que el divisor (dos en este caso), por
lo tanto R puede ser 0 ó 1.
Conversión Decimal-Octal
La conversión de números enteros y fraccionarios decimales a octales se lleva a cabo por
sucesivas divisiones y multiplicaciones, respectivamente, por la base (8).
Ejemplo:
N=1310
13/8 = 1 y R0 = 5 1310 = 158
1/8 = 0 y R1 = 1
Conversión Decimal-Hexadecimal
La conversión de números enteros y fraccionarios decimales a hexadecimales se lleva a
cabo por sucesivas divisiones y multiplicaciones, respectivamente, por la base (16).
Ejemplo:
N=1310:
13/16 = 0 y R0 = 13 1310 = D16
NUMEROS CON SIGNO
En el sistema binario (b=2) si se disponen de m dígitos, es posible representar 2m números
en un rango de 0 hasta 2m-1. Con esta restricción, si se necesita representar números con
signo, es necesario resignar el rango de operación (2m-1-1), ya el bit más significativo
representa el signo del número.
Las premisas más importantes que debe cumplir un buen sistema de representación son:
que tenga igual cantidad de números positivos como negativos, que exista un único cero, que
se puedan realizar las operaciones aritméticas básicas (suma, resta, multiplicación y división),
etc.
Bit de Signo o “Magnitud Signada”
En esta representación, para una palabra de n bits, los n-1 bits de la derecha representan la
magnitud del número y el número positivo si comienza con cero (0) y si el mismo empieza
con uno (1) el número es negativo.
Ejemplo:
Sea N = 810 = 10002
8 = 01000
-8 = 11000
6.1.2 Complemento a Dos
El complemento (N') de un número (N) en una base b se define como:
N' = bp – N [4]
p: número de dígitos de N
b: base
bp: módulo
El módulo toma distintas denominaciones de acuerdo con el sistema numérico que se emplee.
Por ejemplo, para el sistema decimal, se denomina complemento a 10, y para el sistema
binario, complemento a 2.
Ejemplo
N=2010 -----> N' = 100 - 20 = 80
N=10012 -----> N' = 10000 - 1001 = 0111
Es importante notar que el complemento de un número depende del módulo elegido.
Hay dos formas de hallar el complemento a dos de un número:
• Hallar el complemento lógico del número y luego sumarle 1.
1001 -----> 0110 ------> 0110 + 1 = 0111
• Comenzando del bit menos significativo, dejar todos los bits sin cambio hasta el
primer 1 inclusive, luego complementar los restantes.
6.1.3 Complemento a Uno
El complemento a 1 (N") de un número (N), también llamado complemento de base
disminuida, no es más que el complemento lógico del número o el complemento a dos menos
uno.
N" = bp - N - 1
si el número fuese mixto (q <> 0),
N" = bp - b-q - N
Complemento Como Números Negativos
Para representar números con signo en la forma de complemento, se consideran números
negativos a aquéllos cuyo bit más significativo es "1", y números positivos a aquéllos cuyo
bit más significativo es "0". La diferencia con magnitud-signada, radica en la forma de
interpretar los bits restantes.
La representación de números positivos y negativos como complemento, tiene
significativas ventajas sobre la representación bit de signo desde el punto de vista de
hardware y de software.
Números en Complemento a Dos
Un número entero expresado en complemento a dos tiene la siguiente expresión:
N = -d7*27 + . . . + di*2i
Un número fraccionario expresado en complemento a dos tiene la siguiente expresión:
N = -d0*20 + . . . . + d-i*2-i
Elección del Sistema de Representación Numérica
Se pueden mencionar tres razones principales por las cuales la elección de la
representación en complemento a dos es la más adecuada:
1. El hardware aritmético es más simple que en bit de signo y no mucho más complejo
que en complemento a uno.
2. En complemento a uno y bit de signo existen dos formas de representar al cero
(existe un +0 y un -0). Esto causa ciertos problemas en el hardware para la toma de
decisiones, por ejemplo saltar si el resultado es negativo.
3. Hay resultados incorrectos en complemento a uno y bit de signo que se deben
corregir. Ejemplo:(-107)+(-10)= =-117
OPERACIONES ARITMETICAS
En un microprocesador la ALU (Unidad Aritmético-Lógica) es la parte del procesador
encargada de realizar las operaciones aritméticas y lógicas con los datos suministrados. Los
datos manejados por la ALU provienen y se almacenan en registros. La ALU debe además
activar indicadores (banderas o “flags”) como resultados de las operaciones realizadas. Por lo
tanto definiremos una serie de banderas que nos permitirán interpretar los resultados
obtenidos
El carry se produce cuando se supera la capacidad del dígito (en la base que se trabaje 1:
binaria, 9: decimal) en una columna (peso) determinada. Cuando se trabaja con computadoras
no se puede tener infinitos bits de representación de números. Es decir, que los números se
representan por n bits (generalmente 4, 8, 16, 32 bits). Por lo tanto el flag de carry indica que
tuve un desborde en el rango de representación de los números naturales (sin signo).
Si el máximo rango de representación de números con signos (positivos o negativos) se
excede, el flag de carry no nos brinda información de desborde del rango de representación.
Cuando se trabaja con números enteros (con signo), la condición de desborde se indica con
un flag denominado "overflow" (si se desbordan los números positivos) o "underflow" (si se
desbordan los números negativos).
Doble Precisión
Cuando se desea mayor precisión en las operaciones aritméticas que las que provee un
microprocesador utilizando la longitud de palabra estándar, se debe recurrir a la múltiple
precisión.
Suma
Para realizar la suma se procede en igual forma que en simple precisión, con la única
diferencia que la parte más significativa se debe sumar agregando el carry
Resta
Para realizar la resta se procede en igual forma que en simple precisión, con la única
diferencia que la parte más significativa se debe restar teniendo en cuenta el borrow anterior.
Una forma alternativa de implementarla sería complementar el sustraendo, y proceder como
en el caso de la suma.
Operaciones en BCD
El código BCD es la representación de los 10 dígitos del sistema decimal con 4 bits del
sistema binario. Esta representación genera un conjunto de 6 valores no permitidos, que
requiere que algunos resultados de operaciones aritméticas sean corregidos.
Suma en BCD
Los símbolos BCD son 0...9, por lo tanto, con 4 bits de representación, los símbolos A...F
no son válidos. Esto quiere decir que al realizar operaciones aritméticas será necesario hacer
algunas correcciones al resultado.
Resta BCD
Hay dos formas posibles para realizar la resta BCD:
a. Realizar un hardware que realice la resta decimal con borrow.
b. Hallar el complemento a 10 del sustraendo en BCD y luego sumarlos.
Para hallar el complemento a 10 de un número BCD de dos dígitos se puede hacer lo
siguiente:
a. Obtener el complemento a dos de cada dígito individualmente, sin tener en cuenta el
carry.
b. Sumar al dígito menos significativo 1010, y al más significativo, 1001.
Representación Punto Flotante (FP)
Hasta ahora tratamos con números enteros y/o fraccionarios en notación punto fijo. Es
decir, que los números se representan por una cantidad fija de dígitos y cuyo punto base
(decimal, binario, etc.) era fijo. Este tipo de representación limita el rango de números a
representar (por ejemplo, en complemento a 2 es: [2m-1- 1] a [-2m-1] ). La representación en
punto flotante (FP) básicamente presenta las ventajas de ajustar automáticamente la escala y
extender el rango de números que el procesador puede manejar.
Los primeros microprocesadores (4 y 8 bits) no implementaban aritmética en punto
flotante (FP) debido al reducido canal de datos y a la baja velocidad de operación. Sólo
cuando era necesario, se recurría a implementaciones por software.
División
La división de un número M/N es:
M = N*Q + R1
donde:
M: dividendo
N: divisor
R1: resto
Q: cociente
Un algoritmo que pueda realizar la división de números naturales, M/N, consiste en restar
sucesivamente R-N (donde R es inicialmente igual a M, y luego R=R-N) hasta que haya
borrow. Entonces en Q nos queda la cantidad de veces que entra el divisor en el dividendo.
Manejo de Información Empaquetada y Desempaquetada
Es muy importante el manejo de información en la memoria del microprocesador. Por
ejemplo, información codificada en ASCII se puede almacenar en la memoria en forma
empaquetada o desempaquetada: supongamos que se desea almacenar los caracteres
hexadecimales A, B, C y D.
Códigos Detectores y Correctores de Errores
La capacidad para detectar posibles errores en la información manipulada por las
computadoras es esencial para poder confiar en los resultados ofrecidos.
El error es la alteración del valor correcto en uno o más bits de información producida
durante su almacenamiento, transmisión o manipulación.
Función Mayoría
El mecanismo denominado “Función Mayoría”, consiste en repetir la información un
determinado número n de veces, normalmente un número impar (n ≥ 3). Por lo tanto, el
receptor dispondría de varias copias de la información que deberían ser exactamente iguales.
Si hay errores en la información recibida, normalmente afectarán a una sola copia o a un
número pequeño de ellas. En consecuencia, el receptor seleccionará como información
correcta a la copia que se repite mayor cantidad de veces. De ahí surge la importancia de
elegir un número de copias impar.
Es posible considerar que la función mayoría se comporte como un mecanismo para
detectar y/o corregir errores.
Paridad
Consiste en enviar un bit extra a cada caracter enviado, para mantener un número par o
impar de unos (paridad par o impar, respectivamente).
Para calcular la redundancia para paridad par, se debe implementar la función or-exclusiva
entre los bits:
P=dn−1♁dn−2♁...♁d1♁d0
Para calcular la redundancia para paridad impar, se debe implementar la función orexclusiva
negado entre los bits:
I=dn−1♁dn−2♁...♁d1♁d0
Código corrector de errores por paridad vertical y horizontal
Este código corrector de errores, emplea un método combinado de chequeo de errores,
paridad horizontal y vertical. Si un error simple ocurre en una palabra de código, luego
ambos chequeadores indican, en conjunto, la fila y la columna donde se halla el bit con error.
Por lo tanto, este código, es capaz de detectar y corregir un error simple.
Códigos Hamming
El código Hamming es un código de distancia 3, capaz de detectar errores dobles y
corregir si hay un error simple. El código Hamming se forma por n bits de información (Mn,
Mn-1, ... M1) y k bits de chequeo (Ck, Ck-1, ..... C1) de paridad par o impar.
El mensaje codificado está formado por n + k bits, siendo k el menor entero que cumple que:
2k ≥ n+k+1
(por ejemplo, si n = 7, entonces k = 4).
No hay comentarios:
Publicar un comentario