Organización Los computadores comprenden el lenguaje de los números La organización de un computador depende entre otros factores del sistema de representación numérica adoptado Se trabaja con el sistema binario, de donde proviene el término bit como contracción de binary digit
Sistemas de numeración
Un sistema de numeración es un conjunto de símbolos y un conjunto de reglas de combinación de dichos símbolos que permiten representar los números enteros y/o fraccionarios. Dentro de los sistemas de numeración posibles un conjunto importante, destacado, es el constituido por los sistemas de numeración posicionales.
En un sistema de numeración posicional de base b, la representación de un número se define a partir de la regla: ( a3a2a1a0.a-1 a-2 a-3 )b= + a2b2+ a1b1+ a0b0+ a-1b-1+ a-2b-2+ a-3b-3+ Donde b es un entero no negativo mayor a 1 y cuando los ai pertenecen al conjunto de enteros en el rango 0 =ai< b El punto que aparece entre los dígitos a0 y a-1 se denomina punto fraccionario. Cuando b = 10 se lo llama punto decimal y cuando b = 2, punto binario. Sistemas de numeración
Sistema Decimal: Es el sistema de numeración utilizado en la vida cotidiana, cuya base es diez, utilizando los símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9 . Sistema Binario: los dos símbolos utilizados son el 0 y el 1, los que reciben el nombre de bit (binarydigit). Sistema Octal: de base 8, los símbolos utilizados son 0, 1, 2, 3, 4, 5, 6,7. Sistema Hexadecimal: de base 16, los símbolos utilizados son 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Sistemas de numeración
Ejemplos 243.5110 = 2 * 102 + 4 * 101 + 3 * 100 + 5 * 10-1 + 1 * 10-2
2123 = 2 * 32 + 1 * 31 + 2 * 30 = 2310
101102 = 1 * 24 + 0 * 23 + 1 * 22 + 1 * 21 + 0 * 20 = 2210
Métodos de cambio de base Método de restas sucesivas Método del resto de cocientes
Representemos 10410 en base 3
Métodos de cambio de base(para fracciones) Métodos de restas sucesivas Métodos del resto de cocientes Representemos 0.430410 en base 5
Métodos de cambio de base(para fracciones) Las fracciones no siempre pueden ser convertidas en forma exacta, con una expresión finita. (0.3)3 = 2 * 3-1 = 2 + 1/3 En definitiva, las fracciones en una base sólo pueden ser estimadas como una expresión finita en otra.
Conversión de números con signo Signed magnitude: El bit más a la izquierda es usado como indicador de signo. 1 implica que el número es negativo, 0 que es positivo. Si usamos palabras de 8 bits, vamos a poder representar el rango [-(27-1), 27-1]. En general, sobre palabras de n bits podremos representar el rango [-(2n-1), 2n-1]. La suma es igual que en el sistema decimal, incluyendo el concepto de acarreo: En caso de llegar con un acarreo al bit 8, nos encontramos en una situación de overflow.
Conversión de números con signo Sistemas de complemento: la idea es usar los números más altos como números negativos. El complemento de un número se obtiene restándo dicho número al número más grande que puede representarse con el tamaño de palabra con que contamos.
(-52)10 = (999)10 (52)10 = (947)10
(167)10 (52)10 = (167)10 + (947)10 = (114)10 + (1)10 = (115)10
El acarreo se suma al dígito menos significativo. El complemento a r en d dígitos del número N es (rd-1)-N.
Conversión de números con signo Complemento a 1: La idea es igual a lo que vimos en base 10 sólo que las operaciones se realizarán entre expresiones binarias: En este caso, el rango representado es el mismo que el que presentamos para signed magnitude.
(-101)2 = (1111)2 (0101)2 = (1010)2
Ejercicio: convencerse de que tomar el complemento a 1 de un número binario es apenas invertir los dígitos.
Conversión de números con signo Complemento a 2: La idea detrás de este método es la misma que se presentó como Complemento a 1, salvo que realizaremos la resta sobre el menor número que resulta mayor a todos los números representables con el tamaño de palabra con el que contamos: (-101)2 = (10000)2 (00101)2 = (1011)2
Ejercicio: convencerse de que complemento a 2 no es más que complemento a 1, más 1.
El rango representable con complemento a 2 es [-(2n-1), 2n-1-1] El complemento a r en d dígitos del número N es rd-N si N != 0 y 0 en caso contrario.
Representación decimal de un número en complemento a 2 Para los positivos es trivial, se hace lo que vimos en transparencias anteriores evaluando el polinomio que corresponda a la expresión binaria. En el caso de los negativos debemos hacer el procedimiento inverso. Se invierten los bits, Se suma 1, Se convierte a decimal Se le coloca el signo adelante Esto es equivalente a obtener el complemento a 1 y sumarle 1.
Suma en complemento a 2 La suma se opera exáctamente igual a la suma en complemento a 1. La resta, al igual que vimos antes se reduce a la suma del complemento del sustraendo. Detectando overflow: Si el acarreo sobre el bit de signo es igual al acarreo fuera de dicho bit, no hay overflow. En caso que sean distintos sí lo hay.
Multiplicación de enteros Hay casos en los que se cuenta con hardware que optimiza esta operacióne, pero en el fondo son optimizaciones sobre el método que nos enseñaron en la primaria.
Se basa en el simple hecho de que 0 multiplicando cualquier número es 0 y 1 multiplicando cualquier número es ese mismo número.
Multiplicando números enteros La clave del algoritmo es reproducir el desplazamiento que se produce antes de la adición, que no es más que un decalaje en una posición.
Dividiendo números enteros Al igual que en la multiplicación, hay casos en los que se cuenta con hardware que optimiza esta operación, pero nuevamente el método es el más intuitivo. Se basa en la sucesiva sustracción del divisor al dividendo. En el caso de la división entera, el resultado es presentado como dos números, cociente y resto.
Bibliografía Null, L. and J. Lobur. The Essentials of Computer Organization and Architecture, Jones and Bartlett Publishers, Feb. 2003