0% encontró este documento útil (0 votos)
24 vistas34 páginas

Sistemas de Representacion

El documento aborda los sistemas de representación numérica, destacando la importancia de los diferentes sistemas de numeración, como el decimal y el binario, y sus aplicaciones en la vida cotidiana y en la tecnología. Se explican las características de las representaciones analógicas y digitales, así como la evolución de los sistemas de numeración, desde los romanos hasta los sistemas posicionales. Además, se discuten los distintos tipos de números y su relevancia en la expresión de medidas físicas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas34 páginas

Sistemas de Representacion

El documento aborda los sistemas de representación numérica, destacando la importancia de los diferentes sistemas de numeración, como el decimal y el binario, y sus aplicaciones en la vida cotidiana y en la tecnología. Se explican las características de las representaciones analógicas y digitales, así como la evolución de los sistemas de numeración, desde los romanos hasta los sistemas posicionales. Además, se discuten los distintos tipos de números y su relevancia en la expresión de medidas físicas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

SISTEMAS DE REPRESENTACIÓN

INTRODUCCIÓN

1
INTRODUCCIÓN
Desde pequeños todo el mundo está acostumbrado a la utilización de números
para representar cantidades, se utilizan de una forma automática, en función de que se
quiera contar manzanas, balances, niveles, valores de tensión o intensidad, relaciones
complejas ... etc. Tanto es así que muchas veces no se distingue entre la cantidad y los
símbolos que se utilizan para expresar estas cantidades. Cuando se utilizan distintos
sistemas de numeración es algo que hay que tener muy presente.

Véase el siguiente ejemplo: En la figura 1, se observa una hoja del calendario,


está referida al mes de Enero de 2002,

figura 1

Se pueden contar los días del mes de enero, tiene treinta y un días, para expresar
esta cantidad, de forma numérica lo más normal sería: 31, pero también se podría haber
expresado como 4,43, 43, XXXI o☺, por ejemplo. Si bien la primera representación
(31), no habrá ofrecido ninguna duda las otras dos representan la misma cantidad de
días, sólo que de forma diferente.

En el primer caso (31) al contar los días lo que se ha hecho ha sido agrupar en
grupos de diez días todos los que se han podido, al final se observa que se han formado
tres grupos de diez y sobra 1, de ahí la representación 31

En el segundo caso (4,43) los grupos que se han formado son de siete días, y el
resto que queda es de tres, este tres es lo que se representa como una parte de la semana
(siete días)

En el tercer caso (43) se ha seguido un proceso similar al anterior, pero se ha


considerado la unidad fundamental el día y no la semana, por lo que el resultado es
similar al del primer caso cuatro semanas y tres días.

El cuarto caso (XXXI) es la conocida representación mediante números romanos


de la misma cantidad.

El último caso (☺) es un tanto peculiar, no se ha utilizado la nomenclatura


arábiga usual (0, 1, 2, 3…) ni la romana (I, V, X…), sino por un convenio en el que los

2
meses de treinta y un día se representan por este signo y los de 30 y 28 por ☻ y ☼
respectivamente.

El hombre moderno está habituado a la utilización de cantidades mediante


sistemas de numeración en base 10. Un sistema de numeración en una determinada
base, es aquel en que las cantidades se representan mediante un polinomio de potencias
de esa base, así por ejemplo, el número 31 en base 10, es 3x101 + 1x100. Mientras que
en base 5, representaría la cantidad 3x51 + 1x50 (dieciséis). No todos los sistemas de
representación de cantidades han de ser sistemas de numeración y cumplir la norma
anterior, los dos últimos casos (XXXI y ☺) evidentemente no lo cumplen.

No obstante y considerando el sistema de numeración en base 10, existen


diferentes tipos de números:

Naturales: 0, 1, 2, 3, 4…
Enteros: … -3, -2, -1, 0, 1, 2, 3…
Racionales: ⅔, ⅝ etc.
Irracionales: π, e, √2 etc.
Reales: todos los anteriores
Complejos: 1+2i, 12∟32

La existencia de diferentes tipos de números han sido consecuencia de la


necesidad de expresar diferentes medidas del mundo físico, así los naturales son útiles
para contar cantidades discretas de cosas, componentes de un circuito, los enteros
cuando se hizo necesaria de los equivalentes negativos, los racionales pueden venir bien
para expresar cantidades provenientes de la división de dos enteros, como la intensidad
de un circuito expresada como la tensión partida por la intensidad. Los números
irracionales aparecen como la necesidad de relaciones entre magnitudes como el
diámetro y el radio de una circunferencia o la diagonal de un cuadrado con su radio. En
el análisis de circuitos en AC se hace necesario para su mejor estudio el empleo de
números complejos, que representan de forma adecuada tanto la magnitud como el
desfase.

Así mismo es muy interesante la forma de representar estas cantidades para tener
una idea intuitiva de lo que representan así por ejemplo la figura 2 y 2b presentan la
evolución de la velocidad del viento en un día

50 50
45 45
40 40
35 35
velocidad

velocidad

30 30
25 25
20 20
15 15
10 10
5 5
0 0
0 2 4 6 8 10 12 14 16 18 2 0 2 2 2 4 0 2 4 6 8 10 12 14 16 18 20 22 24

hora hora

figura 2

3
En la figura 2a se han representado los valores de la velocidad del viento a lo
largo de un día, mientras que la figura 2b representa los mismos valores pero en unos
instantes de tiempo determinados. La diferencia entre ambas representaciones es
importante desde el punto de vista conceptual:

La primera gráfica representa la variación de una señal a lo largo del tiempo,


esta señal toma, en principio, cualquier valor entre dos valores cualesquiera, mientras
que la segunda solamente tiene existencia en los valores puntuales, y no son posibles
todos los valores, así, en el caso expuesto, solamente son posibles, como máximo, 24
valores.

A la primera representación se le denomina analógica frente a la segunda que se


le denomina digital. Hay que tener presente que la figura 2b no es la representación
digital de la figura 2a, sino la señal muestreada representada mediante un código digital.

Podría pensarse que la representación discretizada puede ser menos útil que la
continua, ya que no se dispone de los valores intermedios entre muestras, no obstante
esto en la realidad no es especialmente importante, y los errores que se pueden cometer
sobre señales continuas, especialmente ruidos asociados a las mismas, hacen que una
señal discreta y digitalizada presente mejores características, siendo evidentemente,
mucho más fácil de almacenar.

Existen multitud de sistemas de representación analógicos y digitales, para las


mismas situaciones, por ejemplo, para realizar cálculos aritméticos se puede utilizar una
regla de cálculo, figura 4 en las que las cantidades se representan mediante distancias o
una calculadora digital, figura 5 en las que las cantidades se representan mediante
símbolos estándar.

figura 3

figura 4

4
De igual manera un termómetro clínico, para medir la temperatura corporal
existe en las dos versiones, analógica y digital, en el primer caso una fina barra de
mercurio indica sobre una escala graduada la temperatura, en el segundo caso se utiliza
para la visualización unos caracteres numéricos.

Una representación analógica es más intuitiva que una digital que en principio
puede requerir un cierto aprendizaje por parte del usuario, la medida analógica puede
dividirse en porciones infinitesimales frente a la digital y sin embargo la precisión de
una medida en digital es más precisa que una analógica.

La afirmación anterior puede parecer contradictoria, con un ejemplo se podrá


comprender la afirmación anterior.

El número π es un número irracional, por lo tanto contiene infinitas cifras


decimales, evidentemente no se puede realizar una representación digital de este
número, sin embargo mediante una representación analógica, ya que dispone de todos
los valores intermedios entre dos dados, si. En una calculadora digital estándar se
disponen de 10 cifras significativas, con lo que se puede representar el número π como
3,141592654 con una precisión mayor que 0,0000000005. Si la representación del
número π se realizase mediante una barra de mercurio o una regla de tal forma que la
correspondencia fuera una unidad un metro, una precisión de 0,0000000005 equivaldría
a que la marca tuviera un grosor inferior a de 5 x10-10 m. que evidentemente el ojo
humano no puede distinguir. Además la representación analógica necesita llevar
asociada normalmente una digital, así un termómetro necesita de unas marcar para
indicar la temperatura en unos determinados puntos para que distintas personas al leerlo
no interpreten cantidades distantes.

Por todo lo anterior la representación digital de cantidades ha estado muy


extendida a lo largo de la historia de la Humanidad de las representaciones elaboradas
como las romanas o árabes a las más simples de marcas.

SISTEMAS DE NUMERACION
Los primeros sistemas de representación de cantidades que utilizaron símbolos,
como el romano, tenían varios inconvenientes en su utilización: era complicado escribir
cantidades grandes, las operaciones aritméticas eran muy engorrosas y carecían de
símbolo para representar al 0. El primer sistema de representación numérica que
utilizaba no solo símbolos sino la posición de símbolo, al igual que un sistema de
numeración, pertenece a los babilonios, esto le permitía escribir cantidades grandes sin
necesitar inventar nuevos símbolos.

En los sistemas de numeración cada cifra representa una cantidad entera y la


posición que ocupa, un peso o múltiplo constante, por ejemplo en el sistema de
numeración en base 10

1904 = 1000+900+4
1904 = 1x(1000) + 9x(1000) + 0x(10) + 4x(1)

5
En la que cada posición de izquierda a derecha Ŗvaleŗ 10 veces la anterior, cada
cifra es denominada dígito. Esto es evidente para todo el mundo, no obstante conviene
ver lo evidente para comprender sistemas de numeración diferentes al base 10.

El sistema de numeración en base 10 utiliza 10 cifras o dígitos diferentes que


son los comprendidos entre el 0 y el 9

Un sistema de numeración en base n utiliza n cifras diferentes para representar


cualquier cantidad, debido a que ya se dispone de las 10 cifras del sistema decimal,
estas son las utilizadas en cualquier base que sea menor que 10, utilizándose letras para
representar los símbolos que no disponemos. Así:

En base 5 se utilizarían los símbolos 0, 1, 2, 3 y 4


En base 16 se utilizarían los símbolos 0, 1, 2,… 9, A, B, C, D, E y F.

La utilización del sistema de numeración en base 10 puede venir como


consecuencia de que disponemos de 10 dedos y estos sin duda se utilizaron, y aún se
utilizan, para contar. El uso de otra base diferente a la base 10 por parte de la gente en la
vida ordinaria parece fuera de cualquier posibilidad.

Es habitual cuando se trabaja con números en diferentes bases indicar la misma


con un subíndice así 12310 indica un número en base 10 y 2346 uno en base 6.

Como norma general se puede decir que utilizando bases menores, la cantidad de
dígitos que hay que utilizar para representar una cantidad es mayor. Por ejemplo

10310=1101112
165410=110011101102

Y por el contrario las operaciones aritméticas son más sencillas, baste con pensar
en la tabla de multiplicación en base 10. En base 2 se reduce a 1x1 =1, 1x0 =0 y 0x0=0

Sistemas de numeración en base 2


El sistema de numeración en base 2, como se ha visto anteriormente, utiliza dos
únicos dígitos para representar todas las cantidades, estos son, el 0 y el 1, es el sistema
de numeración con la base menor que puede existir, nótese que un sistema de
numeración en base 1 únicamente utilizaría el dígito 0, por lo que no se podrían formar
cantidades diferentes a 0

El sistema de numeración en base 2 tiene unas características que lo hacen ideal


para la utilización en sistemas electrónicos digitales, ya que es muy sencillo representar
estas dos cantidades como el estado de corte o saturación de un transistor, por otro lado
las operaciones en base 2 son muy sencillas y el posible inconveniente de manejar
grandes cantidades de dígitos se solventa con relativa facilidad debido al poco espacio y
la velocidad de conmutación de los transistores.

Dado que un número expresado en base 2 es la suma de un polinomio de


potencias de 2, que van aumentando en una unidad de izquierda a derecha, el paso de

6
binario a decimal (sistema binario a sistema decimal) es simple y consiste en poner el
polinomio y operar en base 10:

1011010100 = + 1x29 + 0x28 + 1x27+ 1x26 + 0x25 + 1x24 + 0x23 + 1x22 + 0x21 + 0x20
= 724

En la tabla 1, se encuentran representados la equivalencia de los dieciséis


primeros números en decimal y binario.

Tabla 1
Sistema decimal Sistema binario
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

Para convertir números de una base b2 a otra b si se cumple que b2 > b basta con
dividir por la nueva base e ir tomando los restos. La cantidad convertida a la nueva base
b se escribe como potencias de esa base y tendrá la forma:

(C)b2 = anbn + an-1bn-1 + an-2bn-2 + an-3bn-3 + ... + a3b3 + a2b2 + a1b1 + a0b0

Si se dispone de esta misma cantidad expresado en otra base b2, (C)b2 y al


dividir por la nueva base

(C)b2 /b = anbn-1 + an-1bn-2 + an-2bn-3 + an-3bn-4 + ... + a3b2 + a2b1 + a1b0 + a0b-1

En donde el término a0b-1 es la parte decimal, es decir, el dividendo partido por


el divisor, de donde se deduce que a0 corresponde al resto, procediendo de forma similar
y tomando la parte entera anterior

anbn-2 + an-1bn-3 + an-2bn-4 + an-3bn-5 + ... + a3b1 + a2b0 + a1b-1

El nuevo resto de la división corresponde al segundo coeficiente del número


expresado en la nueva base, este proceso se repite hasta que el divisor sea mayor que el
dividendo, como ejemplo se muestra el paso del número 61310 a binario

7
Tabla 2
Parte entera Cociente resto coeficiente
613 306 1 a0
306 153 0 a1
153 76 1 a2
76 38 0 a3
38 19 0 a4
19 9 1 a5
9 4 1 a6
4 2 0 a7
2 1 0 a8
1 1 a9

Con lo que:

61310 = 10011001012

Si la cantidad a convertir es fraccionaria:

(F)b2 = a-1b-1 + a-2b-2 + a-3b-3 + ... + an-2b-(n-2) + a-n-1b-(n-1) + a-nb-n

Multiplicando ambos términos por b

bx(F)b2 = a-1 + a-2b-1 + a-3b-2 + ... + an-2b-(n-1) + a-n-1b-(n) + a-nb-n+1

En donde el término a-1 representa la parte entera, y que corresponde con el


primer coeficiente del polinomio.

Procediendo de forma análoga, tomando la parte fraccionaria y volviendo a


multiplicar por la nueva base se van obteniendo los distintos coeficientes

Como ejemplo en la tabla 3 se tiene el resultado de convertir el valor 0,613 10 a


binario

Tabla 3
Parte fracc. producto Parte ent. coeficiente
0,613 1,226 1 a0
0,226 0,452 0 a1
0,452 0,904 0 a2
0,904 1,808 1 a3
0,808 1,616 1 a4
0,616 1,232 1 a5
0,232 0,464 0 a6
0,464 0,932 0 a7
0,932 1,864 1 a8
0,864 1,728 1 a9

Con lo que

8
0,61310 = 0,1001110011….2

Nótese que aunque la cantidad expresada en una determinada base tenga un


número finito de decimales, en la nueva base esto no tiene por que ser así.

Si la cantidad a convertir fuese un número con parte entera y parte fraccionaria


se procedería a convertir por separado ambas partes así:

613,613 =613 + 0,613


613,61310 = 1001100101,1001110011….2

Otros sistemas de numeración

Como se ha mencionado anteriormente el sistema de numeración en base 10 es


el utilizado casi en exclusiva en la vida ordinaria y el sistema de numeración en base 2
es el utilizado por los sistemas digitales, también prácticamente en exclusiva. Entonces
¿Qué necesidad existe de otros sistemas de numeración?

El sistema binario se encuentra muy alejado del sistema decimal, además la


utilización de muchos dígitos es muy engorrosa y de fácil equivocación, por ello
sistemas de numeración con otras bases mayores podrían ser de utilidad, siempre y
cuando la conversión a binario fuese sencilla.

Los sistemas que cumplen esta condición son aquellos cuya base es potencia de
2, así los sistemas con base 4, 8, 16, 32 … serían idóneos. El sistema de base 4 está muy
próximo al base 2, por ello no se utiliza el de base 32 y superiores se encuentran muy
alejados del base 10 y necesitan gran cantidad de símbolos adicionales, por lo que
tampoco son de utilidad, así que los sistemas de base 8 y sobretodo base 16 son los que
se utilizan como sistemas de apoyo.

Si se observa la tabla 4, se puede ver la relación existente entre las cantidades


expresadas en base 2, 8 y 16.
Tabla 4
Binario Octal Hexadecimal
00000 0 0
00001 1 1
00010 2 2
00011 3 3
00100 4 4
00101 5 5
00110 6 6
00111 7 7
01000 10 8
01001 11 9
01010 12 A
01011 13 B
01100 14 C
01101 15 D
01110 16 E
01111 17 F
10000 20 10

9
Dado que el sistema de numeración en base 16 o hexadecimal debe contener 16
símbolos diferentes se han añadido las 6 primeras letras del alfabeto.

Se puede comprobar que el paso de binario a octal o hexadecimal y viceversa es


sencillo. Para pasar a octal tan solo se deben agrupar los símbolos binarios de tres en
tres y decodificar cada uno de estos grupos por separado. En el caso de hexadecimal el
proceso es similar pero agrupando de cuatro en cuatro, uno ejemplo aclarará lo dicho
anteriormente. Si la cantidad a convertir es 10101011100011002.

1 010 101 110 001 1002 = 1256148


1010 1011 1000 11002 = AB8C16

La conversión de octal o hexadecimal a binario es similar, se codifican por


separado cada una de las cifras que representan la cantidad.

357128 = 11 101 111 001 010 2


34B716 = 11 0100 1011 01112

CÓDIGOS BINARIOS
Se puede definir como código como una colección de símbolos y reglas que
permite formular e identificar cierta información. Cuando dicha colección simbólica
está formada por agrupaciones de bits, un bit es el acrónimo de Ŗbinary digitŗ y
solamente puede tomar dos valores, el código se denomina binario.

De esta definición se puede deducir que debe existir una correspondencia


biunívoca entre la información y los símbolos y que los sistemas de numeración son
códigos.

Los códigos, tanto binarios o no, sirven para representar no sólo cantidades,
también para representar caracteres alfabéticos, de control, etc.

El número de códigos binarios que se pueden diseñar son infinitos, tan solo hace
falta asignar una determinada combinación de 1řs y 0řs a cada elemento a representar.
Un hecho más importante es saber cuantos elementos se pueden representar con una
determinada cantidad bits.

Si se disponen de n bits el número máximo de combinaciones que se pueden


obtener es de 2N. De forma inversa para poder representar p elementos el número
mínimo de bits N que harán falta deberá cumplir la relación 2N-1 < p ≤ 2N

Uno de los códigos binarios mas utilizados en el que utiliza el como base el
sistema binario, a este código se le denomina código binario natural, y presenta
innumerables ventajas a la hora de realizar operaciones aritméticas frente a otros
códigos binarios, y como ya se menciono anteriormente, es de utilización prácticamente
general en los sistemas digitales electrónicos. No obstante en muchas aplicaciones es
preferible la utilización de otro tipo de código que se adapte mejor a las necesidades
específicas.

10
La utilización en los sistemas digitales electrónicos de los códigos binarios viene
dada por la facilidad, anteriormente expuesta, de obtener dos estados perfectamente
diferenciados y estables en los transistores que lo componen.

Definiciones
Combinación adyacente

Se denomina así a las combinaciones que difieren en un solo bit (dígito).

Distancia de un código

Se define la distancia de un código como el menor número de bits que hay que
cambiar en cualquier combinación para obtener otra del código

Código continuo

Se denomina así al código binario en el combinaciones consecutivas son


adyacentes, es decir, difieren en un solo bit

Código cíclico

Es el código binario continuo en el que además la primera y la última


combinación son adyacentes.

Códigos decimales codificados en binario (BCD) (Binary Code for Decimal digits)

Se denominan de esta forma a los códigos de numeración que utilizan diez


combinaciones binarias para representar las diez cifras del sistema decimal.

Códigos ponderados

Son aquellos en los que cada posición se le puede asignar un peso, es decir,
conociendo los pesos de cada posición se puede descodificar cada combinación.
La expresión siguiente nos da el valor de cada combinación

Códigos autocomplementarios

Se dice que un código BCD es autocomplementario cuando al cambiar los 1řs


por 0řs y viceversa, la combinación obtenida es el complemento a 9 del valor
anterior, es decir, lo que le falta para valer 9.

Códigos alfanuméricos

Son aquellos que se utilizan para representar tanto cantidades como caracteres
alfabéticos y de control.

11
Códigos redundantes

Se denominan códigos redundantes a aquellos que utilizan un número mayor de


bits de los necesarios para codificar todas las combinaciones posibles del código,
estos bits añadidos no dan más información y se pueden obtener de los iniciales.
Son utilizados como códigos de seguridad y permiten corregir o detectar errores
en la información que envían

Códigos detectores de error

Cuando en un código de distancia mayor a 1, se produce un error en uno de los


bits, esta nueva combinación errónea será adyacente a la primera, y por lo tanto,
no pertenecerá al código y se podrá detectar, si la distancia es mayor a 2 se
podrán detectar errores en dos bits y así sucesivamente. Un código detector de
errores de n bits debe tener una distancia mínima de n+1

Códigos correctores de error

Aquellos códigos con distancia superior a 2 pueden diseñarse de tal forma que al
cambiar un bit la nueva combinación solamente sea adyacente a una del código,
este código podrá evidentemente detectar el bit que ha sido erróneo y corregirlo,
estos tipos de códigos son denominados correctores de error. En general para
detectar errores de n bits en una combinación hace falta que la distancia del
código sea 2n+1

Códigos de peso fijo

Se conocen como códigos de peso fijo a aquellos en el que el número de 1řs de


cada combinación perteneciente al código contiene el mismo número de unos.

CÓDIGOS DE INTERÉS ESPECIAL

Código Gray
El código Gray o reflejado es cíclico, su interés deriva principalmente de que es
muy fácil de generar así como su conversión en binario natural en la tabla 5 se puede
observar este código para distintos tamaños.

La forma de generarlo es simple partiendo de un código Gray de un bit menos,


se refleja y como si fuese en un espejo, a la mitad superior se le añade un 0 a la
izquierda y a la otra mitad un 1.

Para pasar de binario natural a Gray, basta con observar que el bit más
significativo es igual, el siguiente más significativo es igual si el número de unos es par
y el inverso si es impar, y así para cada bit, el circuito que es capaz de realizar esta
función se verá en capítulos posteriores

12
Tabla 5
1 BIT 2 BIT 3 BIT 4 BIT
0 00 000 0000
1 01 001 0001
- 011 0011
11 010 0010
10 -- 0110
110 0111
111 0101
101 0100
100 ---
1100
1101
1111
1110
1010
1011
1001
1000

En la figura 5 se pueden observar dos discos utilizados para la decodificación de


posición, un 0 se encuentra representado por el color negro y el 1 por el blanco, uno de
ellos, el primero, codificado en binario natural y el segundo en Gray de 3 bits. Con tres
bits se pueden decodificar 8 posiciones diferentes.

Si la posición en la que se encuentra el lector con referencia al disco es la


marcada con el 1, en medio del sector circular, la lectura en ambos discos no da
problema. Si el lector se encuentra en la posición marcada con 2, entre dos sectores
circulares, no se puede garantizar la lectura del sensor.

figura 5

En el primer caso las lecturas podrían ser 001, 010 que se corresponderían con la
realidad, pero también podrían ser 011 ó 000 que evidentemente son lecturas erróneas.

En el segundo disco, las lecturas pueden ser únicamente 001 ó 011, que
corresponden a la realidad, ya que solamente difieren en un bit.

13
Código Progresivo Johnson
Este código al igual que el Gray es un código cíclico, en la tabla 6 se pueden
observar los correspondientes a 4 y 5 bits, al igual que el Gray puede utilizarse para la
codificación de valores analógicos, pero dado que la capacidad es menor, ya que con n
bits solamente se puede codificar 2xn situaciones, no se suele emplear. Sin embargo,
dado que la generación de este código es muy sencilla y permite obtener de los circuitos
que lo generan la máxima velocidad suele utilizarse en la codificación de máquinas de
estado y en contadores rápidos.

Tabla 6
Decimal Códigos Johnson
Cuatro bits Cinco bits

0 0000 00000
1 0001 00001
2 0011 00011
3 0111 00111
4 1111 01111
5 1110 11111
6 1100 11110
7 1000 11100
8 11000
9 10000

Código BCD binario natural


Con este nombre se conoce al código que utiliza las 10 primeras combinaciones
del sistema binario para codificar los 10 dígitos del sistema decimal. Como su nombre
indica es un código decimal codificado en binario, por lo que las combinaciones deben
tener todas ellas 4 bits, los necesarios para completar las 10 combinaciones, ya que
cumple con la condición 23 < 10 < 24. Dado que con 4 bits se puede codificar hasta 16
situaciones diferentes y sólo se aprovechan 10 el código BCD binario natural es menos
compacto que el sistema binario, por lo que se necesitan más bits para expresar
cantidades, por lo que no suelen utilizarse en sistemas digitales para la realización de
cálculos

Es un código ponderado, cuyos pesos son de derecha a izquierda 1, 2, 4 y 8, al


igual que los pesos del sistema binario.

En la tabla 7, se puede observar este código.

Código BCD Aiken

Al igual que el BCD binario natural el código Aiken es un código BCD


ponderado, cuyos pesos de derecha a izquierda son 1, 2, 4 y 2, la propiedad más
importante de este código es que es autocomplementario, es decir, al cambiar los 1řs por

14
0řs y viceversa se obtiene la combinación que representa el complemento a nueve de la
inicial, así el 4 se representa como 0100, su complemento es 1011 que corresponde al 5.

En la tabla 7 se puede observar este código.

Tabla 7
Códigos BCD ponderados
Dígitos decimales Binario natural Aiken
8421 2421
0 0000 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 1011
6 0110 1100
7 0111 1101
8 1000 1110
9 1001 1111

Código BCD exceso 3


Este código BCD toma como base los códigos del binario natural pero
sumándole tres unidades y de ahí su nombre. No pertenece a la categoría de los códigos
ponderados pero es autocomplementario, por lo que las operaciones de resta, como se
verá en capítulos posteriores, son de fácil realización.

En la tabla 8, se puede observar este código junto al BCD binario natural y


observar que cada combinación corresponde a tres unidades más que en el sistema
binario.

Tabla 8
Dígito decinal BCD binario natural BCD exceso 3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100

Código ASCII
El código ASCII (American Standard Code for Information Interchange), se
pronuncia como as-ki, ASCII es un estándar de representar caracteres y símbolos en
forma electrónica. Usar estándares aumenta la eficiencia y elimina errores, requiere

15
disciplina y a veces restringe la creatividad. Sin embargo, es muy útil para la
comunicación entre usuarios. Internet requiere aún más enfoque en estándares, porque
se trata en muchos casos de usuarios de idiomas diferentes. Las personas que tuvieron la
visión de internet, trataron de establecer una plataforma de comunicación global. Usar
estándares es una forma de cumplir este objetivo.

El código ASCII utiliza 7-bit que sustituyen las letras del alfabeto romano, cifras
y otros caracteres de control. Con 7 bits se pueden representar 27 = 128 caracteres
diferentes, con lo que se pueden representar mayúsculas, minúsculas caracteres
numéricos y de control.

Tabla 9

ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

0 0 NUL 16 10 DLE 32 20 (espacio) 48 30 0


1 1 SOH 17 11 DC1 33 21 ! 49 31 1
2 2 STX 18 12 DC2 34 22 " 50 32 2
3 3 ETX 19 13 DC3 35 23 # 51 33 3
4 4 EOT 20 14 DC4 36 24 $ 52 34 4
5 5 ENQ 21 15 NAK 37 25 % 53 35 5
6 6 ACK 22 16 SYN 38 26 & 54 36 6
7 7 BEL 23 17 ETB 39 27 ' 55 37 7
8 8 BS 24 18 CAN 40 28 ( 56 38 8
9 9 TAB 25 19 EM 41 29 ) 57 39 9
10 A LF 26 1A SUB 42 2A * 58 3A :
11 B VT 27 1B ESC 43 2B + 59 3B ;
12 C FF 28 1C FS 44 2C , 60 3C <
13 D CR 29 1D GS 45 2D - 61 3D =
14 E SO 30 1E RS 46 2E . 62 3E >
15 F SI 31 1F US 47 2F / 63 3F ?

ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4A J 90 5A Z 106 6A j 122 7A z
75 4B K 91 5B [ 107 6B k 123 7B {
76 4C L 92 5C \ 108 6C l 124 7C |
77 4D M 93 5D ] 109 6D m 125 7D }
78 4E N 94 5E ^ 110 6E n 126 7E ~
79 4F O 95 5F _ 111 6F o 127 7F •

16
La tabla 9 presenta el código ASCII de 7 caracteres. Es usual además la
utilización de un octavo bit, para detectar posibles errores de transmisión o grabación.
Si el octavo bit se emplea para representar más caracteres como letras griegas y
símbolos semigráficos, se tiene el denominado ASCII Extendido, usado en el PC de
IBM y en microordenadores compatibles. En la tabla 10, se puede observar ese juego de
caracteres

El símbolo significa que el conjunto de caracteres o fuente actual, no lo


contiene. Por ejemplo se ha cambiado recientemente el código 128 para representar el
nuevo símbolo de dinero Euro €, pero los conjuntos de caracteres o fuentes más
antiguas no tendrán ese símbolo.

Tabla 10

ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

128 80 € 144 90 • 160 A0 176 B0 °


129 81 • 145 91 Ř 161 A1 ¡ 177 B1 ±
130 82 ‚ 146 92 ř 162 A2 ¢ 178 B2 ²
131 83 ƒ 147 93 Ŗ 163 A3 £ 179 B3 ³
132 84 „ 148 94 ŗ 164 A4 ¤ 180 B4 ´
133 85 … 149 95 • 165 A5 ¥ 181 B5 µ
134 86 † 150 96 Ŕ 166 A6 ¦ 182 B6 ¶
135 87 ‡ 151 97 ŕ 167 A7 § 183 B7 ·
136 88 ˆ 152 98 ˜ 168 A8 ¨ 184 B8 ¸
137 89 ‰ 153 99 ™ 169 A9 © 185 B9 ¹
138 8F Š 154 9A š 170 AA ª 186 BA º
139 8B ‹ 155 9B 171 AB « 187 BB »
140 8C Œ 156 9C œ 172 AC ¬ 188 BC ¼
141 8D • 157 9D • 173 AD 189 BD ½
142 8E Ţ 158 9E ţ 174 AE ® 190 BE ¾
143 8F • 159 9F Ÿ 175 AF ¯ 191 BF ¿

ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

192 C0 Â 208 D0 Ð 224 E0 à 240 E0 ð


193 C1 A 209 D1 Ñ 225 E1 á 241 E1 ñ
194 C2 Á 210 D2 Ò 226 E2 â 242 E2 ò
195 C3 Ã 211 D3 Ó 227 E3 ã 243 E3 ó
196 C4 Ä 212 D4 Ô 228 E4 ä 244 E4 ô
197 C5 Å 213 D5 Õ 229 E5 ; 245 E5 õ
198 C6 Æ 214 D6 Ö 230 E6 æ 246 E6 ö
199 C7 Ç 215 D7 × 231 E7 ç 247 E7 ÷
200 C8 È 216 D8 Ø 232 E8 è 248 E8 ø
201 C9 Ì 217 D9 Ù 233 E9 é 249 E9 ù
202 CA Ê 218 DA Ú 234 EA ê 250 EA ú
203 CB Ë 219 DB Û 235 EB ë 251 EB û
204 CC Ì 220 DC Ü 236 EC ì 252 EC ü
205 CD Í 221 DD Ý 237 ED í 253 ED ý
206 CE Î 222 DE Þ 238 EE î 254 EE þ
207 CF Ï 223 DF ß 239 EF ï 255 EF ÿ

17
Código EBCDIC
El Sistema de las computadoras IBM 390 y computadoras de gran porte usan su
propio juego de códigos, llamado EBCDIC. Es un código similar al ASCII, en la tabla
11, se presenta este juego de caracteres.

Tabla 11
Decimal | Hexadecimal | Carácter Decimal | Hexadecimal | Carácter
129 81 a 194 C2 B
130 82 b 195 C3 C
131 83 c 196 C4 D
132 84 d 197 C5 E
133 85 e 198 C6 F
134 86 f 199 C7 G
135 87 g 200 C8 H
136 88 h 201 C9 I
137 89 i 209 D1 J
145 91 j 210 D2 K
146 92 k 211 D3 L
147 93 l 212 D4 M
148 94 m 213 D5 N
149 95 n 214 D6 O
150 96 o 215 D7 P
151 97 p 216 D8 Q
152 98 q 217 D9 R
153 99 r 226 E2 S
162 A2 s 227 E3 T
163 A3 t 228 E4 U
164 A4 u 229 E5 V
165 A5 v 230 E6 W
166 A6 w 231 E7 X
167 A7 x 232 E8 Y
168 A8 y 233 E9 Z
169 A9 z 64 40 Esp.
blanco
240 F0 0 75 4B .
241 F1 1 76 4C <
242 F2 2 77 4D (
243 F3 3 78 4E +
244 F4 4 79 4F |
245 F5 5 80 50 &
246 F6 6 90 5A !
247 F7 7 91 5B $
248 F8 8 92 5C *
249 F9 9 93 5D )
122 7A : 94 5E ;
123 7B # 96 60 -
124 7C @ 97 61 /
125 7D ' 107 6B ,
126 7E = 108 6C %
127 7F " 109 6D _
193 C1 A 110 6E >
111 6F ?

18
Unicode
Se usa en las computadoras bajo Windows NT. IE4 y Netscape, su uso se está
extendiendo. El Unicode versión beta 3.2 contiene decenas de miles de caracteres de
los utilizados en los lenguajes más importantes del mundo. Además de letras y números,
el Unicode incluye puntuación, símbolos matemáticos y técnicos, formas geométricas,
caracteres gráficos y modelos del Braille. Unicode contiene el código ASCII como un
subconjunto.

Unicode presenta un código único para cada símbolo, sin importar la plataforma
o el idioma en que se trabaje. Los códigos anteriores ASCII o EBCDIC contemplan
multitud de variantes, en función del idioma, por lo que pueden aparecer caracteres con
códigos repetidos o viceversa.

Código 7 segmentos
Este código es el utilizado para representar cantidades en los visualizadores de 7
segmentos, realizados en su mayoría mediante diodos electro luminiscentes (LED).
Puede presentarse en las variantes BCD y hexadecimal. En la figurra 6 se puede
observar el visualizador de 7 segmentos y en la tabla 12, se puede el código para la
versión hexadecimal, para BCD, solamente serían válidas las 10 primeras
combinaciones

Tabla 12
Dígito hexadecimal Código 7 segmentos
GFEDCBA
0 011111111
1 000000110
2 101110111
3 001111111
4 110011110
5 110111101
6 111111101
7 000000111
8 111111111
9 110011111
A 111101111
B 111111100
C 011111001
D 101111110
E 111111001
F 111110001

19
figura 6

CODIGOS REDUNDANTES

Códigos con paridad


En muchas ocasiones, sobretodo cuando se envía información de un dispositivo
a otro lejano, existe la posibilidad de que alguno de los bits que componen la
información a transmitir cambie de valor, debido a ruidos u otro tipo de errores que
pueden cometerse, en estos casos suele ser interesante disponer de códigos que detecten
esta posibilidad. Para ello es necesario que la distancia del código sea superior a 1, ya
que de no ser así la nueva combinación, producto del error, puede pertenecer al código,
y por lo tanto, no se puede detectar el hecho. Así si se utiliza el código BCD binario
natural, por ejemplo, se quiere enviar la combinación 0011 y el bit menos significativo
pasa a 0 la nueva combinación 0010 también pertenece al código y por lo tanto es
indetectable.

Una de las formas más sencillas de obtener un código que tenga distancia 2 es la
siguiente: a partir de un código de distancia 1, se le añade un nuevo bit. Este bit hará
que el número de 1řs de la combinación sea par o impar, denominándose
respectivamente código de paridad par o impar.

Si dos combinaciones son adyacentes, se diferenciarán en un solo bit, que en una


combinación será 0 y en la otra 1, por lo que todas las combinaciones que son
adyacentes a una dada tendrán un número de 1řs mas o menos, por lo que si la
combinación inicial tiene un número par de 1řs, es decir 2n, las combinaciones
adyacentes, serán de la forma 2n+1 ó 2n-1 en cuyo caso las combinaciones adyacentes
tendrán un número impar de 1řs. Si se genera un código en el que todas las
combinaciones tengan un número par (o impar) de 1řs la distancia tendrá que ser
superior a 1.

La forma de detectar en este tipo de códigos errores en 1 bit es comprobar la


paridad de la combinación. Este tipo de comprobación se realiza de forma muy sencilla
mediante circuitos electrónicos digitales, como se verá posteriormente.

20
En la tabla 13 se pueden observar distintos tipos de códigos con paridad,
generados a partir de códigos de distancia unidad. En donde se ha añadido el bit de
paridad como bit menos significativo.

Tabla 13
BCD binario natural BCD Aiken
Dígito decimal
Paridad par Paridad impar
0 00000 00001
1 00011 00010
2 00101 00100
3 00110 00111
4 01001 01000
5 01010 10110
6 01100 11001
7 01111 11010
8 10001 11100
9 10011 11111

Código de 2 entre 5
Este código además de ser un código de paridad, es un código de peso constante,
por lo que la distancia del código también es superior a 1 por lo tanto puede utilizarse
como código detector de error de 1 bit.

En la tabla 14 puede observarse este código.

Tabla 14
Dígito decimal Código de 2 entre 5
0 01100
1 11000
2 10100
3 10010
4 01010
5 00110
6 10001
7 01001
8 00101
9 00011

Código Biquinario
Al igual que el código de 2 entre 5 el código biquinario es un código BCD, de paridad y
peso constante, pero además es un código ponderado, la utilización de este código es
similar al anterior. En la tabla 15 se puede observar este código.

21
Tabla 15
Código biquinario
Dígito decimal pesos
5043210
0 0100001
1 0100010
2 0100100
3 0101000
4 0110000
5 1000001
6 1000010
7 1000100
8 1001000
9 1010000

Códigos con redundancia cíclica

Estos códigos son utilizados cuando se envían una serie de combinaciones desde
un elemento transmisor a uno receptor. Se utiliza como base un código de distancia
unidad. El transmisor, a medida que envía la información al receptor va realizando una
serie de operaciones con los datos, estas consisten básicamente en:

a) Utilizar un polinomio G(y), denominado generador, conocido tanto por el


receptor como por el transmisor.

b) Si m es el número de bits a transmitir, esos se consideran como un polinomio,


T(y) de grado m-1 (de 0 a m-1).

c) El grado del polinomio G(y) debe ser inferior al de T(y).

d) Si el grado de G(y) es g, se añaden g bits, de valor 0, al final de los m bits de


la transmisión, con lo que queda un polinomio F(y), de grado m+g-1.

e) A continuación el transmisor realiza la operación F(y)/G(y) usando la división


módulo 2.

f) Se resta el residuo en módulo 2 a F(y), este es el polinomio T(y), que se envía.

g) Por parte del receptor, éste debe dividir T(y)/G(y) y el residuo debe ser 0, de
no ser así existe un error en la transmisión.

Un ejemplo aclararán las operaciones anteriores:

T(y) = 1001010101011101010101110000
G(y) = 10101
Grado de T(y) = 27; Grado de G(y)= 4
F(y) = 10010101010111010101011100000000
Resto de F(y)/G(y) = 1011
T(y) = F(y) - (Resto de F(y)/G(y))
T(y) = 10010101010111010101011011110101
Resto de T(y)/G(y) = 0

22
La realización de estas operaciones matemáticas no involucra una circuitería
especialmente grande, aunque se suelen utilizar en sistemas digitales de media o alta
complejidad.

En este tipo de códigos hay que cuidar el tamaño del bloque a transmitir, ya que
con bloques grandes, la seguridad es menor que con pequeños.

Códigos de redundancia simple


Consiste en repetir varias veces la combinación y que el receptor tome las
decisiones al respecto, así si se quiere enviar la combinación 10011, se enviaría 10011,
10011, 10011 por ejemplo, si en la transmisión se cometieran algunos errores, por
ejemplo: 11011, 00011, 10111 el receptor podría evaluar cada uno de los bits de la
combinación y sacar la combinación correcta.

Códigos Hamming

Este tipo de código es muy utilizado para la corrección de errores, consiste en


añadir los bits necesarios para que la condición descrita anteriormente de 2n+1, como
valor de la distancia del código se cumpla.

Fue el primer tipo de código corrector de error descrito, data de 1.950, la idea
básica es añadir unos bits de redundancia, pero en lugar de hacerlo al principio o al final
es irlos intercalando entre los bits de información. Evidentemente esto hace que los bits
a transmitir sean más.

Como ventaja es que se dispone de la posibilidad de detectar cual es el bit


erróneo y corregirlo. Los códigos Hamming se caracterizan por una pareja de índices
(k,n), siendo k la longitud de la combinación a enviar y n el número de bits redundantes,
los datos serán por lo tanto k-n. Los bits redundantes no son más que comprobaciones
de paridad de bit estratégicamente colocados.

Al añadir al código base (k-n) n bits, debe cumplir la condición de que con estos
n bits se puedan detectar el posible error en una de estas k posiciones, así como la
ausencia de error en ellas, es decir, 2n≥ k + 1.

Como ejemplo se va a realizar el diseño de un código Hamming que permita la


corrección de un bit sobre una combinación de 4 bits (k-n). La distancia del código
deberá ser por lo tanto de 2x1+1=3. El número de bits redundantes será 3, ya que 23 =
(4+3) +1.

La combinación de estos 3 bits determinará la presencia de error, indicando la


posición errónea o la ausencia de la misma.

Supóngase que el código original es el Gray y que la posición se va a indicar


mediante código Gray, en la tabla 16, se puede observar los valores de las
combinaciones de los bits redundantes para las diferentes posiciones en las que aparezca
el error

23
Tabla 16
n3n2n1 Bit erróneo
0 0 0 Ninguno
0 0 1 1
0 1 1 2
0 1 0 3
1 1 0 4
1 1 1 5
1 0 1 6
1 0 0 7

Se observa que el n3 debe tomar el valor 1 cuando se produzca un error en los


bits 4, 5, 6 ó 7, n2 para 2, 3, 4 ó 5 y n1 en 1, 2, 5 ó 6. Ahora bien los bits n3, n2 y n1 son
bits redundantes, lo que implica que se pueden obtener de la combinación.

n1 valdrá 1 si b1, b2, b5 ó b6 no son correctos.


n2 valdrá 1 si b2, b3, b4 ó b5 no son correctos.
n3 valdrá 1 si b4, b5, b6 ó b7 no son correctos.

Dado que se pretende la corrección de errores de 1 bit, las condiciones anteriores


son exclusivas, es decir, solamente una de las condiciones, puede darse, en el caso de
n1, si es erróneo b1 no lo serán ni b2 ni b5 ni b6. y además como b1 solamente se
encuentra en la primera condición se puede generar b1 como función de b2, b5 y b6, de
tal forma que b1 mantenga una paridad par. De forma análoga b3 y b7.

Así se tomarán b1, b3 y b7 como los bits redundantes ya que son los más fáciles
de generar, y b2, b4, b5 y b6 como los bits del código original. En la tabla 17, se puede
observar el código Gray para 4 bits, el valor de los bits redundantes y el código
Hamming que tiene asociado
Tabla 17
Valor Código Gray Bits redundantes Código Hamming
decimal
Posición final
6542 731 7654321
0 0000 000 0000000
1 0001 011 0000111
2 0011 101 1001011
3 0010 110 1001100
4 0110 001 0011001
5 0111 011 0011111
6 0101 100 1010010
7 0100 111 1010101
8 1100 010 0110100
9 1101 001 0110011
10 1111 111 1111111
11 1110 100 1111000
12 1010 011 0101101
13 1011 000 0101010
14 1001 110 1100110
15 1000 101 1100001

La forma de obtención de los bits redundantes es la siguiente: se toma una


combinación del código original p.e. 0101 que corresponde a los bits 6, 5, 4 y 2

24
respectivamente de la combinación final. Como n1=b1, b1 tendrá que tomar el valor 1 si
la combinación no es correcta, como b1 es función de b2, b5 y b6 y estos deben tomar
el valor 1, 1 y 0 respectivamente, y si uno de los bits cambia, la combinación deja de
tener un número par de unos para tener un número impar, para mantener la paridad par,
n1=b1, debe tomar el valor 0. De esta manera se completan todos los valores de la
columna de los bits redundantes. En temas posteriores se realizará una justificación más
detallada.

REPRESENTACION DE NUMEROS CON SIGNO

Notación módulo argumento.


De las formas en que se puede representar las magnitudes con signo en binario
es seguramente la módulo argumental la mas similar a la utilizada en la vida ordinaria,
ya que normalmente la forma de representar un número negativo es añadirle delante el
signo Ŕ a la cantidad y no añadirle ningún signo si la magnitud es positiva. De forma
análoga en Digital se puede tomar un convenio de esta manera, a los números negativos
añadirle un bit con valor 1, y a los números positivos añadirle un bit con valor 0. Este
bit se coloca en la posición más a la izquierda de la cantidad. A continuación se
muestran unos ejemplos en los que se ha utilizado el sistema de numeración en base dos
como código de referencia.

1001100011 número negativo (-99)


0001100011 número positivo (99)

Nótese que en este tipo de representación es importante mantener constante el


número de bits para representar cada cantidad, ya que el número 0001100011 representa
el 99 en decimal, mientras que el 1100011 representaría el -35 en decimal con un
formato de 7 bits, es decir, los 0řs a la izquierda si valen.

La capacidad de representar cantidades varía desde Ŕ(2n-1-1) a +(2n-1-1), el cero


se representa como 10000...0 (-0) ó 00000…0 (+0). En la tabla 18 se muestra la
representación de números en esta notación con 3 bits más bit de signo.

Tabla 18
Representación módulo argumental
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 0 1000
1 0001 -1 1001
2 0010 -2 1010
3 0011 -3 1011
4 0100 -4 1100
5 0101 -5 1101
6 0110 -6 1110
7 0111 -7 1111

25
NOTACIÓN EN COMPLEMENTO A 2
En esta forma de representar cantidades con signo se mantiene el criterio del
argumento, un 1 para los números negativos y un 0 para los positivos. Si bien los
números positivos se representan con el mismo criterio que en la notación módulo
argumental, los números negativos se representan mediante el complemento a la base
2n, es decir, hay que restar a 2n el valor positivo de la cantidad. Un ejemplo aclarará lo
anterior

Si se quiere representar el número -26 en notación de complemento a 2 con 6


bits más bit de signo sería:

Número 26 en notación binaria: 11010


Complemento a la base 26: 1000000-11010= 1100110
Número -26 en notación de complemento a 2: 1100110

En la tabla 19, se puede observar la representación de las cantidades en notación


de complemento a dos con 3 bits significativos mas 1 bit de signo.

Tabla 19
Representación en complemento a 2
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000

Existen dos reglas nemotécnica para encontrar el complemento a 2 de una


determinada cantidad son las siguientes:

1ª)
1º) Se parte del valor en positivo

2º) Partiendo del bit menos significativo se dejan todos iguales hasta que aparece
el primer 1, que también queda igual

3º) A partir de este bit se cambian los 1řs por 0řs y los 0`s por 1řs

2ª)
1º) Se parte del valor en positivo

2º) Se cambian los 1řs por 0řs y viceversa

3º) Al valor anterior se le suma 1

26
Las magnitudes representables con n bits van desde Ŕ(2n-1) a + (2n-1 -1). Como se
verá en capítulos posteriores la ventaja de este tipo de representación estriba en que es
más fácil la realización de operaciones aritméticas mediante circuitos electrónicos
digitales, es el formato más utilizado para representar cantidades enteras.

NOTACIÓN EN COMPLEMENTO A 1
Esta forma de representación es similar a la de notación de complemento a dos,
la diferencia estriba en que no se realiza el complemento a la base 2n, si no a 2n-1 en la
tabla 20, se muestra la representación de números con esta notación, en la que se puede
observar que con n bits significativos más 1 bit de signo se pueden representar
cantidades entre Ŕ(2n-1-1) y +(2n-1-1).

La forma de obtener las cantidades negativas consiste en cambiar los 1řs por 0řs y los
0řs por 1řs en la combinación correspondiente al número positivo.

Tabla 20
Representación en complemento a 2
Números positivos Números negativos
Decimal Binario Decimal Binario
0 0000 0 1111
1 0001 -1 1110
2 0010 -2 1101
3 0011 -3 1100
4 0100 -4 1011
5 0101 -5 1010
6 0110 -6 1001
7 0111 -7 1000

REPRESENTACIÓN DE NUMEROS REALES


Los números reales como se vio en la introducción al capítulo pueden contener
un número infinito de cifras. Cuando se pretende trabajar con máquinas electrónicas que
operen con este tipo de cantidades en algún sitio habrá que truncar las cifras que
representan la cantidad, ya que no es posible almacenar un infinito número de
caracteres. Existen básicamente dos opciones para representar cantidades fraccionarias,
que son las denominadas coma fija y coma flotante.

Representación en coma fija


Este convenio de representación de números reales asigna una cantidad fija de
bits para la parte entera y otra, también fija, para la parte fraccionaria.

Si se dispone de un sistema de representación de este tipo con, por ejemplo, 10


bits para la parte entera, 6 bits para la parte fraccionaria. Se tendría:

Para la parte entera, y para números positivos desde 0 (0000000000) a 210-


1=1023 (1111111111)

27
Para la parte fraccionaria desde 0 (0,000000) hasta el valor 1-2-6 =0,984375
(0,111111)

Siendo la fracción más pequeña representable de 2-6 = 0,015625 (0,0000012)

Como se puede observar este sistema no permite representar números muy


grandes ni fracciones muy pequeñas, como contra las operaciones de suma y de resta
son fáciles de realizar.

La representación sobre un segmento rectilíneo de todos los números


representables daría una sucesión de puntos equidistantes unos a otros a una distancia de
2-6 del tamaño del segmento. Lo que implica que la precisión relativa es mala para los
números pequeños y buena para los grandes.

Este tipo de notación se puede complementar con las vistas anteriormente de


complemento a uno, a dos o módulo argumento para representar cantidades positivas y
negativas, por ejemplo el número fraccionario positivo 234,615 se representaría en un
formato de coma fija con bit de signo, complemento a dos con 9 bit significativos
enteros y 6 fraccionarios como:

234,61510 = 0 011101010,100112

Sin embargo el número 0 0011101010,100112 corresponde a 234,5937510, con


lo que se tiene un error por truncamiento de 0,02125

Para representar un número negativo, por ejemplo -315,76

315,76 = 0 0100111011,110000
-315,76 = 1 1011000100,001111

Nótese que al realizar el complemento a 2 se ha procedido de forma similar a si


hubiese sido complemento a 1 (cambiar 1řs por 0řs y viceversa), esto es así por que en
este caso el número de decimales es infinito y con valores distintos a 0.

Representación en coma flotante: Estándar IEEE 754

Al igual que para representar cantidades muy grandes, o muy pequeñas, se


utiliza la notación exponencial, en los códigos binarios se pueden realizar
representaciones de cantidades utilizando este criterio. Utilizando la fórmula ±S * B±E,
utilizando para ello tres campos:

1 campo para el signo (1 ó 0)


1 campo para la mantisa (S)
1 campo para El exponente (E)

28
La base esta de forma implícita, por lo que no es necesario indicarla ya que, es la
misma para todas las cantidades.

Para ver como se representan números en este tipo de convenio lo mejor es a


través de un ejemplo.

Supóngase que se dispone de un total de 32 bits, de ellos 1 es para el bit de


signo, 8 para el exponente y 23 para la mantisa, se dispondrá de un formato como el de
la figura 7

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
figura 7

El valor del exponente se almacena en los bits comprendidos entre las posiciones
23 y 30, 8 bits, existen varias formas para representar el valor del exponente, el más
usual es el denominado Ŗsesgadoŗ que consiste en sesgar las 2n combinaciones posibles
(en el ejemplo 256) a 2n-1 -1 (en el ejemplo 127), con lo que los posibles valores van
desde -2n-1 +1( en el ejemplo -127, correspondiente a la combinación 00000000) hasta
2n-1 (en el ejemplo 128 correspondiente a la combinación 11111111), aunque estos dos
valores, como se verá en la tabla 22 representan otras situaciones

Para indicar la mantisa, se deben realizar primero unas consideraciones:

Las cantidades 0,11010*25, 1,1010*24 o 0,011010*26 representan el mismo


valor numérico, sin embargo, tienen mantisas y exponentes diferentes. Para simplificar
existe un formato normalizado, que consiste en representar un número con parte entera
igual a 1. Es decir que el primer bit de la mantisa sea 1. Al ser el primer bit 1 este queda
implícito, y por lo tanto, no hace falta representarlo, por lo que con la mantisa de 23 bits
del ejemplo se pueden representar mantisas de 24 bits con un valor entre 0,5 y 1.

A continuación se muestran una serie de valores expresados con este convenio.

37,2710 = 100101,01000010100000101002 = 1,001010100001010000010102*25

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
0 100000100 00101010000101000001010

0,234 = 0,001110111110111110101001= 1,11011111011111010100110*2-3

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
0 011111100 11011111001110110110010

29
-987,6 = -(1111011011,10011001100110) =
= -(1,11101101110011001100100*29)

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
1 10001000 11101101110011001100110

-0,07 = -(0,000100011110101110000101001) =
= -(1,00011110101110000101001*2-4)

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
1 01111011 00011110101110000101001

El rango de números positivos estará comprendido entre los valores 0,5*2-128 y


(1-2 )*2127
24

El rango de números negativos estará comprendido entre los valores -(1-


2 )*2 y -0,5*2-128
24 127

Cuando los números a representar son cantidades muy grandes o muy pequeñas, la
forma de encontrar el valor puede hacerse de la siguiente manera:

Supongamos la cantidad 0.00015

Se comienza calculando el equivalente de -0.00015 en formato m*2n. El procedimiento


que se sigue es el siguiente:
log(0.0015) /log(2) 12,70..
Se aproxima al inmediatamente inferior -13, si el número fuere positivo, por ejemplo
23,14 se tomaría el 23.
A continuación se debe encontrar un número que multiplicado por 2-13 de 0.00015
0.0015
x 1,2888
2 13
Luego 0,00015=1.288
-13
*2

Dado que en el sistema de representación IEEE 754 la normalización es con la parte


entera igual a uno, sólo resta el convertir la parte decimal, como el número es negativo y
el exponente -13, la solución será

Posiciones de los bits


31 30 23 22 0
BS Exp. sesgado Mantisa
1 01110010 00111010100100101010010

30
Redondeos

A diferencia de los números enteros, es difícil que un número real pueda ser
representado exactamente con un número fijo de cifras binarias significativas en su
mantisa (nm+1). Para solucionar este problema debemos aplicar algún tipo de
aproximación o redondeo. El formato IEEE 754 utiliza el denominado redondeo al par
que consiste en redondear a un número par en el caso en el que el error sea igual si se
aproxima al número representable inmediatamente superior y al inmediatamente
inferior. Si no se da esta igualdad, obviamente, y como es lógico, simplemente se
redondea al número representable más cercano.
Para decidir si se suma uno o se trunca es necesario analizar el bit menos significativo
(que se encuentra en la posición -nm del campo de la mantisa) y dos bits adicionales no
pertenecientes al número final, denominados bit de redondeo y bit retenedor: El bit de
redondeo es aquel que, como resultado de una operación y después de normalizar el
resultado, se encuentra en la posición -(nm+1). El bit retenedor es, en iguales
circunstancias, el que está a su derecha, en la posición -(nm+2). Veamos como se
realiza el redondeo al par con un ejemplo:

Supóngase que la mantisa de los datos se almacena en 5 bits (nm=5). Los redondeos al
par que se obtendrían de las operaciones de la ALU que siguen son los que se indican:

Resultado Acción Redondeo


1,001101 10 Sumar 1 1,001110
1,001100 10 Truncar 1,001100
1,001100 11 Sumar 1 1,001101
1,001100 01 Truncar 1,001100
1,001100 00 Truncar 1,001100

La figura 8 muestra el campo de representación de cantidades enteras en notación de


complemento a 2 con los 32 bits que se han estado utilizando en el ejemplo anterior, una
representación análoga, pero con el formato de coma flotante y con los mismos 32 bits
da el resultado de la figura 9

figura 8

31
figura 9

En ella se pueden observar 6 zonas diferentes:

Zona 1) Son los valores negativos menores que el mínimo permitido se le


denomina desbordamiento negativo

Zona 2) Son los valores negativos representables

Zona 3) Son los valores negativos mayores que el máximo representable, se


denomina desbordamiento a cero negativo

Zona 4) Son los valores positivos menores que el mínimo representable, se


denomina desbordamiento a cero positivo

Zona 5) son los valores positivos representables

Zona 6) son los valores positivos mayores que el máximo representable, se


denomina desbordamiento positivo.

Hay que hacer notar que el número cero no es representable, sin embargo se
incluye una representación para este número en representaciones en coma flotante como
se verá en el apartado siguiente.

En la figura 10, se presenta la distribución de los valores en la recta real, hay que
hacer notar que la distribución no es uniforme a lo largo de la misma, habiendo mas
precisión en los valores pequeños que en los grandes, con lo que se mantiene la
precisión relativa.

figura 10

Manteniendo la cantidad, se puede aumentar, a costa de disminuir la mantisa, el


número de bits destinados al exponente, con esto se consigue aumentar el rango de

32
números representados a costa de la precisión. Si lo que se aumenta es el número de bits
de la mantisa lo que ocurre es que se aumenta la precisión a costa de disminuir el rango,
ya que el número de puntos representables en ambos casos es el mismo. Por lo tanto
para aumentar tanto el rango como la precisión la única solución es aumentar el número
de bits totales.

Además se ha supuesto que la base de los exponentes es base 2, sin embargo,


aunque normal, no es siempre así existiendo formas de representación que utilizan como
base el sistema hexadecimal. Un sistema mayor implica un aumento en el rango
representable, pero si se mantiene el número total de bits el número de puntos no varía y
por lo tanto, es a costa de la precisión.

Es la representación más difundida en la actualidad de representación de


números en coma flotante. Este estándar define dos formatos, uno de 32 bits (1 bit de
signo, 8 bits de exponente y 23 de mantisa) y otro de 64 bits (1 bit de signo, 11 bits de
exponente y 52 de mantisa), además de dos formatos ampliados de 32 y 64 bits para
cálculos intermedios. En la tabla 21 se muestran algunas de las características de este
formato.
Tabla 21
formato
Parámetro
Simple Doble
Longitud de palabra 32 64
Longitud del exponente 8 11
Sesgo 127 1023
Exponente máximo 127 1023
Exponente mínimo -126 -1022
Rango (base 10) 10-38, 1038 10-308, 10308
Longitud de la mantisa 23 52
Número de exponentes 254 2046
Número de mantisas 223 252
Número de valores 1,98*231 1,99*263

En la tabla 22 se pueden observar algunos de los Ŗnúmerosŗ especiales definidos

Tabla 22
Simple precisión Doble precisión
Signo Exp. Fracc. Valor Signo Exp Fracc. Valor
Cero positivo 0 0 0 0 0 0 0 0
Cero negativo 1 0 0 -0 1 0 0 -0
Más infinito 0 255 0 ∞ 0 2047 0 ∞
Menos infinito 1 255 0 -∞ 0 2047 0 -∞
NaN silencioso 0ó1 255 ≠0 NaN 0ó1 2047 ≠0 NaN
NaN indicador 0ó1 255 ≠0 NaN 0ó1 2047 ≠0 NaN
Positivo normalizado≠0 0 0..255 f 2e-127 0 0..2047 f 2e-1023
Negativo normalizado≠0 1 0..255 f -2e-127 1 0..2047 f -2e-1023
Positivo desnormalizado 0 0 f≠0 2e-126 0 0 f≠0 2e-1022
Negativo desnormalizado 1 0 f≠0 -2e-126 1 0 f≠0 -2e-1022

Conviene realizar las siguientes puntualizaciones:

La mantisa tiene implícito un 1 como bit más significativo, por lo que las
mantisas representan cantidades comprendidas entre 0,5 y 1 con 24 y 53 bits
para los formatos simple y doble.

33
Un exponente 0 junto con una parte fraccionaria 0 representa al 0,
positivo o negativo en función del signo.

Un exponente todos 1řs junto con una parte fraccionaria 0 representa,


dependiendo del signo +∞ ó -∞

Un exponente 0 junto con una parte fraccionaria no cero representa un


número no normalizado. En este caso el exponente original es -126 ó -1022, el
bit a la izquierda del punto binario es 0 y el signo indica si es positivo o
negativo.

Un exponente todos 1řs junto con una parte fraccionaria distinta de 0`s
recibe el nombre de NaN (Not a Number).

Existen otros convenios de representación de números fraccionarios en coma


flotante, las diferencias principales vienen dadas en los siguientes apartados:

Campo del exponente: A veces se utiliza como base la base 16, siendo el rango
de los valores almacenados mucho más grande que si utilizamos la base 2, para
una misma longitud de bits ne asignada (aunque veremos que disminuye la
precisión en los datos): Para un mismo valor de longitud del campo del
exponente se cumple que 16Emax >2Emax. Otra variación que suele haber es el sesgo:
En muchos sistemas se utiliza un exponente también sesgado, aunque con un
sesgo una unidad superior que en el caso de IEEE 754: S=2ne-1

Campo de la mantisa: Algunos sistemas utilizan una normalización del tipo


0ř... (se llama normalización con parte entera nula) y no del tipo 1ř... . La
posición del uno más significativo es ahora la -1, y la mantisa quedará dispuesta
ahora de la siguiente forma: [0,1m] (vemos que el uno implícito está en la
posición -1). En este caso podemos: utilizar la base 2, cumpliéndose que
0ř5≤M<1, ya que al haber un uno en la posición menos uno tenemos que 2-1=0ř5
sería el valor mínimo, y uno nunca puede alcanzarse; o, por el contrario, usar la
base 16, y entonces el bit más significativo se podrá encontrar en las posiciones -
1,-2,-3 ó -4 cumpliéndose ahora que 0ř0625≤M<1 (puesto que 2-4=0ř0625; notar
que con B=16 cuando se aumenta o disminuye el exponente en una unidad, hay
que desplazar la coma decimal de 4 en 4 bits; notar también que aquí no puede
haber uno implícito en la mantisa, y que se debe guardar toda la parte
fraccionaria: La representación será[0.m]).

Redondeos: Algunos sistemas utilizan el redondeo por truncamiento sin más.


Pero esto tiene la desventaja, con respecto al tipo de redondeo empleado en
IEEE-754, de que cada vez se va perdiendo valor en los cálculos (los números
son cada vez, en valor absoluto, menores). Se desemboca en una situación en la
que sucesivamente, al ir realizando sucesivos cálculos, los bits menos
significativos van siendo menos fiables. Este tipo de redondeo por truncamiento
está presente en ordenadores tan importantes como IBM 370 o CRAY, por
ejemplo.

34

También podría gustarte