Capitulo 3
Capitulo 3
Capitulo 3
Representación numérica
INTRODUCCIÓN
Desde hace mucho tiempo, el hombre en su vida diaria se expresa, comunica, almacena información, la
manipula, etc. mediante letras y números. Para la representación numérica utiliza el sistema de
representación decimal, en tanto que, dependiendo del idioma, dispone de un alfabeto que representa
estas letras.
Siguiendo el mismo principio que guía al hombre, las computadoras tienen su propio sistema de
representación. Debido a su construcción basada fundamentalmente en circuitos electrónicos digitales,
utiliza un sistema binario. Esto obliga a transformar la representación de nuestra información, tanto
numérica como alfanumérica, a una representación binaria para que la máquina sea capaz de
procesarlos.
Como veremos más adelante, tanto el sistema decimal como el binario están basados en los mismos
principios. En ambos, la representación de un número se efectúa por medio de cadenas de símbolos,
los cuales representan una determinada cantidad dependiendo de cada símbolo y la posición que ocupa
dentro de la cadena con respecto al denominado punto (o coma) decimal.
Por cuestiones de índole técnica, los circuitos electrónicos que conforman una computadora suelen
estar capacitados para reconocer señales eléctricas de tipo digital; por lo tanto, se hace necesario que
los métodos de codificación internos tengan su origen en el sistema binario, y con ellos se pueda
representar todo tipo de informaciones y órdenes que sean manejadas por la computadora.
Fue Claude Shannon (matemático e ingeniero norteamericano, 1916-2001) quien aplicó estas técnicas
de estudio, a los circuitos compuestos de elementos que solo pueden adoptar dos estados estables
posibles, apareciendo entonces los llamados circuitos lógicos.
Puede decirse entonces que el álgebra de Boole es el sistema matemático empleado en el diseño de
circuitos lógicos, que nos permite identificar mediante símbolos el objeto de un circuito lógico de modo
que su estado sea equivalente a un circuito real.
Es interesante antes de abordar el estudio de las ecuaciones lógicas, comprender algunos conceptos
básicos relativos a la teoría de conjuntos como pueden ser:
Conjunto particular. Reunión de elementos pertenecientes al conjunto universal, pero que además
poseen alguna características particular que los distingue del resto.
Conjunto vacío. Aquel que no posee ningún elemento. Se representa por 0.
Conjunto complementario de otro conjunto A (también denominado conjunto negado o inverso). Está
constituido por todos los elementos del conjunto universal que no pertenecen al conjunto A.
La complementación
Sea una variable booleana A, que por el hecho de serlo solamente podrá poseer dos estados. Si en un
instante determinado posee el estado lógico 1, diremos que su estado inverso o complementado será el
0. Si por el contrario la variable A posee el estado lógico 0, su complemento será el 1. El complemento
de una variable A se representa simbólicamente por: Ā
La suma
La operación lógica suma entre dos o más conjuntos (o variables booleanas) se representa mediante el
signo "+". Por tanto si tenemos C = A + B , leeremos “el conjunto C es la suma de los conjuntos A y B”.
Sin embargo suele leerse “C es igual a A o B”. Esta operación se denomina también reunión de
conjuntos. La función suma se define mediante la siguiente tabla de la verdad:
A B C
0 0 0
0 1 1
1 0 1
1 1 1
En ella podemos apreciar cómo el resultado de esta operación es 1 lógico cuando la variable A, o la
variable B valen 1. Este resultado puede generalizarse para "n" variables de entrada.
El producto
La operación producto entre dos conjuntos se representa mediante el símbolo *, y da como resultado un
conjunto formado por elementos comunes a dichos conjuntos.
Esta operación se denomina también intersección de conjuntos. Por tanto tendremos que D = A * B
representa un producto y se lee “D es igual a A por B”, o también “D es igual a A y B.” (Para mayor
comodidad se acostumbra a escribir D=AB)
A B D
0 0 0
0 1 0
1 0 0
1 1 1
En ella podemos apreciar que el resultado del producto será 1 lógico si y solo si la variable A y la
variable B son ambas 1.
Teoremas
Conocidas ya las tres operaciones más elementales del álgebra de Boole, enunciaremos a continuación
de la forma más concisa posible, sus teoremas fundamentales:
Teorema 1. El resultado de aplicar cualquiera de las tres operaciones antes definidas, a variables
booleanas, es otra variable booleana y además el resultado es único.
Teorema 2. Ley de idempotencia. Tanto la suma como el producto de una variable booleana consigo
misma da como resultado la misma variable:
A+A=A
A*A=A
Teorema 3. Ley de involución. Una variable booleana negada dos veces, da como resultado la misma
variable:
Teorema 4. Ley conmutativa. Se define respecto a la suma (y al producto) y nos dice que el orden de
los sumandos (factores) no altera el resultado:
A+B=B+A
Ā=A
A*B=B*A
Teorema 5. Ley asociativa. Se define respecto a las operaciones suma y producto de la siguiente
forma:
Respecto de la suma: A+(B+C) = (A+B)+C = A+B+C
Respecto del producto: A(BC) = (AB)C = ABC (se omite el símbolo *)
Analizadas las variables booleanas y sus operaciones, pasamos a definir una función booleana como un
conjunto de variables booleanas relacionadas entre sí por cualquiera de las tres operaciones ya
definidas o una combinación de ellas. En general la representaremos por:
f(A,B,C,...)
Además podemos asegurar que toda función booleana es también una variable booleana (Teorema 1).
PUERTAS LÓGICAS
Existe un convenio gráfico para representar dispositivos (electrónicos, hidráulicos, mecánicos, etc.) que
lleven a cabo funciones booleanas elementales y que, en función de la combinación o combinaciones
diseñadas, se obtendrán funciones más complejas. Estos dispositivos que desarrollan las funciones
booleanas, los denominaremos puertas lógicas y son básicamente: Puertas OR, AND, NOT, NOR,
NAND, OR exclusiva y NOR exclusiva.
A+B=A.B
A.B=A+B
Las puertas OR
Desarrollan la suma booleana. Su símbolo gráfico está representado en la FIG.1. donde podemos
apreciar que se trata de una puerta OR de dos entradas y que a su salida nos proporciona la suma
lógica de ambas. Su tabla de la verdad corresponde evidentemente a la suma booleana.
Si deseamos tener una puerta OR de tres entradas no tendremos más que añadir una tercera línea de
entrada y su salida nos dará la suma de las tres variables de entrada.
Como podemos apreciar, se trata de una puerta AND de dos entradas, si deseamos tener una puerta
AND de tres entradas no tendremos más que añadir una tercera línea en la entrada obteniendo en la
salida el producto lógico de las tres variables de entrada.
Por tanto esta función es lo mismo que conectar en serie una función lógica producto y una
complementación. Su símbolo lógico y su tabla de la verdad vienen dadas en la FIG.5.
Vemos aquí que la salida de esta puerta será 1 lógico siempre que al menos una de sus entradas sea 0
lógico.
Su símbolo y su tabla de la verdad vienen en la FIG.6. Como podemos ver la salida de esta puerta es 1
lógico siempre que una y solo una de sus entradas tenga el nivel lógico 1, es decir sus entradas tienen
que poseer valores distintos.
En la FIG.7 podemos ver su tabla de la verdad y su símbolo lógico. La salida adopta el valor lógico 1
solamente cuando ambas variables son 0 ó 1 al mismo tiempo.
CIRCUITOS COMBINACIONALES
Un circuito combinacional es un conjunto de puertas lógicas interconectadas, cuya salida, en un
momento dado, es función solamente de los valores de las entradas en ese instante. Como sucede con
una puerta como las vistas anteriormente, la aparición de un valor en las entradas viene seguida casi
inmediatamente por la aparición de un valor en la salida, con un retardo propio de la puerta.
En general, un circuito combinacional consiste de n entradas binarias y m salidas binarias. Como una
puerta, un circuito combinacional puede definirse de tres formas:
• Tabla de verdad: Para cada una de las posibles combinaciones de las n señales de entrada, se
enumera el valor binario de cada una de las m señales de salida.
• Símbolo gráfico: Describe la organización de las interconexiones entre puertas.
• Ecuaciones booleanas: Cada señal de salida se expresa como una función booleana de las
señales de entrada.
Los circuitos combinacionales implementan las funciones esenciales de una computadora digital. Sin
embargo, ellos no proporcionan memoria, que es un elemento también esencial para el funcionamiento.
Para estos fines, se utilizan circuitos lógicos digitales mas complejos denominados circuitos
secuenciales y que escapan al objetivo del presente curso.
SISTEMAS DE NUMERACIÓN
“....
¿Cuántos camellos hay?. Para responder a esta pregunta hay que emplear el
número.
¿Serán cuarenta? ¿Serán cien?
Para llegar al resultado el beduino precisa poner en práctica cierta actividad. El
beduino necesita contar.
Para contar, el beduino relaciona cada objeto de la serie con cierto símbolo: uno,
dos, tres, cuatro,...
Para dar el resultado de la cuenta, o mejor el número, el beduino precisa inventar un
sistema de numeración. ....”
El hombre que calculaba, Capítulo XX. Como Beremiz da su 2da clase de matemática
Los sistemas de numeración actuales son sistemas posicionales, en los que el valor relativo que
representa cada símbolo o cifra de una determinada cantidad depende de su valor absoluto y de la
posición relativa que ocupa dicha cifra con respecto a la coma decimal.
Supongamos una cantidad expresada en un sistema cuya base es B y representamos por xi cada uno
de los dígitos que contiene dicha cantidad, donde el subíndice i indica la posición del dígito con respecto
a la coma fraccionaria, la posición se numera en forma creciente hacia la izquierda y decreciente hacia
la derecha de la coma (posición 0), en ambos casos de a 1.
El Teorema Fundamental de la Numeración dice que el valor decimal de una cantidad expresada en
otro sistema de numeración, está dado por la fórmula:
El sistema decimal es uno de los denominados posicionales, que utiliza un conjunto de 10 símbolos, xi Є
{0,...9}. Un valor determinado o cantidad, que se denomina número decimal, se puede expresar por la
fórmula del Teorema anterior, donde la Base es 10.
Ejemplo:
¿Cuál es la interpretación de la representación de la cantidad 3,1416?
Ejemplo
¿Qué número decimal representa el número binario 1001,1?. Utilizando el Teorema
Fundamental de la Numeración:
Al igual que los anteriores, el sistema hexadecimal es un sistema posicional pero que utiliza dieciséis
símbolos para la representación de cantidades. Estos símbolos son los siguientes:
0123456789ABCDEF
donde las letras A, B, C, D, E, F equivalen a 10, 11, 12, 13, 14 y 15 del sistema decimal
respectivamente.
Ejemplo:
¿Qué número decimal representa el número hexadecimal 2CA?
En la resta binaria hay que tener en cuenta que al realizar las restas parciales entre dos dígitos de
idénticas posiciones, uno del minuendo y otro del sustraendo, si el segundo excede al primero, se
sustrae una unidad del digito de más a la izquierda en el minuendo –pedir prestado-. Si el dígito
siguiente de la izquierda es 0, se busca en los sucesivos teniendo en cuenta que su valor se multiplica
por dos a cada desplazamiento sucesivo a derecha.
Ejemplo
Restar los números binarios 111100 y 101010
Conversión decimal-binario
El método de conversión de un número decimal a un número binario consiste en efectuar, sobre la parte
entera del número decimal, divisiones sucesivas de los cocientes por el número 2, hasta que el cociente
entre una de las divisiones tome el valor 0. La unión de todos los restos obtenidos, escritos en orden
inverso, nos proporciona ahora el número inicial expresado en sistema binario.
Ejemplo
Convertir el número decimal 15 a binario.
Leyendo los restos del último obtenido al primero de ellos, obtenemos: 11112 = 1510
Para convertir una fracción decimal a su equivalente binario se debe multiplicar dicha fracción por dos,
obteniendo en la parte entera del resultado el primero de los dígitos binarios de la fracción que
buscamos. A continuación, se repite el proceso con la parte fraccionaria del resultado anterior,
obteniendo en la parte entera del nuevo resultado el segundo de los dígitos buscados. El proceso se
repite hasta que desaparezca la parte fraccionaria de los resultados parciales (se haga 0) o hasta que
tengamos los suficientes dígitos binarios.
Ejemplo
Se desea convertir la fracción 0,828125 a binario
Ejemplo
Convertir 7BA3,BC a binario
• Módulo y signo.
• Complemento a 1.
• Complemento a 2.
• Exceso a 2n-1.
Estas representaciones de números utilizan el sistema binario y se considera que tenemos un número
limitado de bits para cada dato numérico. Este número de bits disponibles lo representamos por n.
También se pueden representar mediante estos métodos números reales, como veremos más adelante.
Módulo y signo
En este sistema de representación, el bit que está situado más a la izquierda representa el signo, y su
valor será 0 para el signo + y 1 para el signo -. El resto de bits (n-1) representan el módulo del número.
Suponemos en principio que los números no poseen parte decimal, por lo que la coma se supone
implícita a la derecha.
Por ejemplo, supongamos que disponemos de 8 bits, y queremos representar los números 10 y –10.
Veamos cuales son sus representaciones.
La ventaja que presenta este sistema frente a otros es la de poseer rango simétrico (igual cantidad de
números positivos que negativos), mientras que su mayor inconveniente es el de poseer dos
representaciones para el número 0. El cual se representa tanto con un signo positivo (0) como con uno
negativo (1) y el resto de los bits en 0.
Complemento a 1
Este sistema de representación utiliza el bit de más a la izquierda para el signo, correspondiendo el 0
para el signo + y el 1 para el signo -. Para los números positivos, los n-1 bits de la derecha representan
el m?ulo (igual que en el sistema anterior). El negativo de un número positivo se obtiene
complementando todos sus dígitos (cambiando ceros por uno y viceversa) incluido el signo.
Veamos la representación en complemento a 1 de los números 10 y –10 para el caso de n=8 bits.
La ventaja que presenta este sistema frente a otros es la de poseer rango simétrico (igual cantidad de
números positivos que negativos), mientras que su mayor inconveniente es el de poseer dos
representaciones para el numero 0. El cual se representa tanto con todos 0 como con todos los bits en
uno.
Complemento a 2
Este sistema de representación utiliza el bit de m? a la izquierda para el signo, correspondiendo el 0
para el signo + y el 1 para el signo -. Para los números positivos, los n -1 bits de la derecha representan
el módulo (igual que en los dos sistemas anteriores). El negativo de un número positivo se obtiene en
dos pasos:
• Primer paso: se complementa el número positivo en todos sus bits (cambiando ceros por uno y
viceversa), incluido el bit de signo, similar a complemento a 1.
• Segundo paso: al resultado obtenido se el suma 1 (en binario), despreciando el último acarreo si
existiera.
Representa al número 10 y
Exceso a 2n-1
Este método de representación no utiliza la convención del BIT más significativo para identificar el
signo, con lo cual todos los bits representan un número o valor. Este valor se corresponde con el
número representado más el exceso, que para n bits viene dado por 2n-1. El signo del número resulta de
una operación aritmética.
Por ejemplo, para n=8 bits el exceso será 128, con lo cual para representar un número debería
sumársele dicho exceso. De esta manera el número 10, que veníamos representando, recibirá la
adición del número 128, con lo que representaremos el número binario 138. Por otro lado, el número –
10, se representarán como el 118 (-10+128). De esta forma quedarán:
En este sistema el número 0 tiene una sola representación, la cual consiste en representar el exceso,
128 en este caso.
Suma en complemento a 2
En la aritmética de complemento a 2, dos números se suman de igual forma que en complemento a 1,
con la única diferencia que se desprecia el último acarreo en el caso que el mismo exista.
Ejemplo
Sumar los números 10 y –3 en complemento a 2 para n = 8 bits. La representación de los números es:
La suma de los números decimales 110 y 30 representados en complemento a 2 utilizando n = 8 bits es:
Flags
En la UCP, existen banderas o flags que luego de realizar una operación, cambiarán acorde al resultado
de dicha operación. El estado de estos bits (que formarán parte de un registro) pueden ser consultados
por el programador por medio de instrucciones especiales; la importancia de estos bits reside en que de
acuerdo a su valor (1 ó 0), permitirán la toma de decisiones.
Se presentan aquí 4 de estas, que son afectadas luego de realizar una suma ó una resta, por eso las
llamaremos banderas aritméticas. Otras instrucciones pueden no afectarlas, como así también debemos
mencionar que existen otras banderas que se modificarán en respuesta a otras instrucciones.
Estas banderas ó bits son:
• Z (cero): esta bandera toma el valor 1 indicando que el resultado de la operación fue cero. Para
cualquier otro resultado el valor de esta bandera es cero.
• N (negativo): esta bandera toma el valor del bit más significativo del resultado. Dicho de otra
manera si la bandera vale 1 es porque el resultado es negativo, y 0 si el resultado es positivo.
• V (overflow): esta bandera vale 1, indicando una condición de desborde (fuera de rango) del
resultado en números con signo (complemento a 2). Por condición De desborde se entiende que
la cantidad de bits no alcanza para expresar el resultado.
• C (carry): esta bandera toma el valor 1 indicando que hay ’acarreo’ en la suma ó ‘borrow’ en la
resta. Cuando esta bandera toma el valor 1 indica una condición de fuera de rango en números
sin signo.
Analicemos la cuenta, si interpretamos como números con signo quisimos sumar 5 + 7 = -4 (valor
erróneo). El resultado de la cuenta deberá dar +12, pero este número no puede ser expresado con 4
bits, pues el positivo más grande que se puede expresar con esta cantidad de dígitos es +7.
Si los interpretamos como números sin signo sumamos 5 + 7 = 12 (valor correcto). Con 4 bits sin signo
se puede expresar hasta el 15, por lo tanto la interpretación sin signo es correcta.
La bandera N es 0, Z = 1 indica que el resultado es cero, aquí el resultado se considera con 4 bits como
los operandos, V = 0, y C = 1 pues hay arrastre en el bit más significativo del resultado, es decir
“aparecerá” un quinto BIT.
Interpretando el resultado de acuerdo a las banderas estará bien si sumamos números con signo (V=0)
pero estará mal si la suma representa números sin signo (C = 1).
Con signo sumamos –3 + 3 = 0 (correcto) pero sin signo es 13 + 3 = 0 (deberá resultar 16 que no puede
ser expresado con 4 bits).
Con signo (Ca2) la cuenta es 5 – 7 = -2 resultado correcto (V = 0) y sin signo la cuenta es 5 – 7 = 14,
incorrecto pues deberá dar –2 (valor que no se puede expresar en números sin signo).
Un número en esta notación tiene infinitas representaciones, de las que se toma como estándar la
denominada normalizada, que consiste en que la mantisa no tiene parte entera y el primer dígito o cifra
a la derecha del punto decimal es significativo (distinto de 0), salvo en la representación del número 0.
Ejemplo
Representación del número decimal 835,4 con base de exponenciación 10.
siendo la última expresión la que corresponde al número normalizado.
835,4 =8354*10−1 =835,4*100 =83,54*101 =8,354*102 = 0,8354*103
En este sistema de codificación de números, se dividen los bits disponibles en la palabra o doble
palabra de la computadora entre la mantisa y el exponente, teniendo una base de exponenciación
determinada (2 o potencia de 2). Normalmente la definición de la coma flotante de una computadora
sigue las siguientes reglas:
• El exponente se representa en uno de los siguientes sistemas de codificación módulo y signo o
exceso a 2n-1, siendo siempre un número entero. En este sistema de codificación el exponente
también recibe el nombre de característica.
• La mantisa es un número real con el punto decimal implícito a la izquierda de sus bits,
representada normalmente en uno de los siguientes sistemas de codificación módulo y signo,
complemento a 1 o complemento a 2.
• La base de exponenciación es una potencia de 2 determinada por el fabricante de la
computadora (2, 8 o 16)
Existen muchas formas de representación en coma flotante, variando su longitud de la palabra de la
computadora, la base de la exponenciación, el número de bits reservados para la mantisa y para el
exponente, el sistema utilizado para representar la mantisa y el exponente, etc.. La coma flotante se
define particularmente en cada caso. Las definiciones m? comunes son las siguientes:
a) para simple precisión (32 bits) signo exponente mantisa
31 30 23 22 0
63 62 52 51 0
El rango de representación en la coma flotante debe ser analizado teniendo en cuenta los mínimos y
mínimos valores representables tanto con signo positivo como negativo:
Conviene observar que existen cuatro zonas de números que no pueden ser representados mediante
un determinado formato de coma flotante. Estas zonas están ubicadas cercanas al 0, tanto para valores
positivos como negativos (subdesborde positivo o negativo), como para valores grandes (positivos) o
chicos (negativos) que exceden el rango de representación.
Ejemplo
Una computadora utiliza el siguiente formato para registrar números en coma flotante:
• los bits del 23 al 30 se utilizan para representar el exponente en exceso a 128 (27)
• los bits del 0 al 22 se utilizan para representar la mantisa normalizada para el sistema Módulo y
signo
• el bit 31 se utiliza para representar el signo de la mantisa (0 para el +)
• la base de exponenciación es 2
• el 0 se representa con todos los bits en 0.
Representar en el formato definido el –12. En este caso la notación normalizada solo sufre cambio en el
signo de la mantisa (-0,75 * 24), la expresión quedarán entonces:
1 10000100 11000000000000000000000
signo (-) exponente 4 mantisa 0,75
Códigos Alfanuméricos
Una computadora puede trabajar internamente con un conjunto de caracteres que nos permitirán
manejar datos, informaciones, instrucciones, órdenes de control, etc.
Este conjunto de caracteres podemos subdividirlo en los siguientes grupos:
• caracteres alfabéticos
• letras mayúsculas (A..Z sin la Ñ)
• letras minúsculas (a..z sin la ñ)
• cifras decimales: los números 0, 1, ..., 9
• caracteres especiales
• caracteres como el . , ; : * @, etc.
En general cada carácter se maneja internamente en una computadora por medio de un conjunto de 8
bits mediante un sistema de codificación binario que denominaremos código de caracteres.
Cada computadora tiene su código de caracteres definidos por el fabricante, si bien la mayoría de ellos
adaptan a sus equipos códigos estándar de los ya establecidos.
En estos códigos se representa cada caácter por medio de un byte, con lo cual todo tipo de información
puede ser utilizada internamente, formando cadenas de bytes sucesivos que representará cadenas de
caracteres para que la máquina las maneje e interprete. No todos los tipos de códigos utilizan para la
representación de caracteres los ocho bits de un byte; en la actualidad se tiende a utilizar códigos de 8
bits aunque siguen existiendo algunos códigos de 6 y 7 bits.
Los primeros códigos utilizados fueron de 6 bits, que permiten la representación de 26 caracteres
distintos (64 caracteres), que generalmente se corresponden a:
• 26 letras mayúsculas
• 10 cifras numéricas
• 28 caracteres denominados especiales
Con el nacimiento de los lenguajes de programación de alto nivel comenzaron a utilizarse códigos de 7
bits que permiten la representación de los mismos caracteres que los códigos de 6 bits añadiendo las
letras minúsculas y caracteres cuyo significado son órdenes de control entre periféricos. Un ejemplo
muy utilizado de este tipo de códigos es el ASCII (American Standard Code for Information Interchange)
de 7 bits.
Hoy los códigos utilizados son los de 8 bits, de los cuales los más conocidos son el ASCII extendido que
agrega un bit a la representación ASCII extendiendo la cantidad de símbolos disponibles a 256 y el
EBCDIC (Extended Binary Coded Decimal Interchage Code).
PREGUNTAS DE REVISIÓN
1- ¿Cuál es la razón técnica por la cual la mayoría de las computadoras son únicamente
sistemas digitales binarios?
2- Trabajar con una base de expresión numérica mayor que 2 (por ejemplo 10 o 16) puede
tener beneficios para “acortar” el número de dígitos de un número. Sin embargo,
internamente en la computadora obliga a “convertir” a binario. Esta metodología puede
conducir a errores? ¿Por qué?
3- ¿Qué ventaja tiene que en algunas computadoras se fabriquen unidades aritméticas
dedicadas exclusivamente a realizar las operaciones de punto flotante por hardware?
4- Si las computadoras están constituidas por circuitos o chips que implementan funciones
lógicas por interconexión de puertas lógicas. ¿Qué utilidad o ventajas se obtendrían si
un usuario pudiera establecer o programar la interconexión de las puertas lógicas de un
chip? Investigue si existen los supuestos circuitos con lógica programable.
5- ¿Cuál es el funcionamiento del siguiente circuito que justifica se lo denomine como
decodificador 3 a 8?