Está en la página 1de 13

Representación numérica y tipos

de errores
Representación de datos en las computadoras binarias:

• Números enteros: solamente se realiza la conversión del sistema binario al sistema


decimal. Se pueden usar cadenas de 2, 4 y 8 bytes.

• Números reales: se emplea la representación de punto flotante. De manera


estándar se tienen números de 4 y 8 bytes, pero también existen números de 12 y
16 bytes, según el sistema operativo y la arquitectura de la plataforma utilizada.

• Texto: se emplea un mapeo que relaciona la cadena de bits con los caracteres
utilizados. El texto en código ASCII utiliza un byte por carácter, pero también
existen caracteres de 2 y 4 bytes, empleados bajo los códigos de caracteres
Unicode.

Nota: El código ASCII estándar emplea cadenas de 7 bits, por lo que sólo admite 128 caracteres del idioma inglés. Existe un
código ASCII extendido de 8 bits que admite hasta 256 caracteres, pero el conjunto extendido (del 128 al 255) no es estándar en
todas las plataformas, pudiendo soportar pocos idiomas. Por ello, se recomienda limitar su uso para almacenar textos en inglés y
archivos de datos numéricos almacenados en forma de texto.
Números enteros

1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 = -5451
2 bytes, 16bits, 65536 combinaciones. Tipos short int y unsigned short int. Rango soportado: -32768 a 32767
(0 a 65535 sin signo).

0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 = 8693610
4 bytes, 32bits, 4294967296 combinaciones. Tipos int y unsigned int. Rango soportado: -2147483648 a
2147483647 (0 a 4294967295 sin signo).

Números de punto flotante


=0
±𝑎 × 10±𝑏 Donde 𝑎 → se le llama mantisa o significante, siendo un
1 ≤ 𝑎 < 10
número con el punto decimal en posición fija, y b es un exponente entero.

0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1

Exponente Mantisa
Tipos de datos estándar de punto flotante:

0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1

4 bytes: 1 bit para signo, 8 bits en exponente y 23 bits en la mantisa (tipo float o single), 10 cifras significativas
de precisión. Rango soportado: -1.701411733e±38 a 3.402823466e±38 .

0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1

8 bytes: 1 bit para signo, 11 bits en exponente y 52 bits en la mantisa (tipo double), 16 cifras significativas de
precisión. Rango soportado: -2.2250738585072014e±308, 1.7976931348623158e±308.

Nota importante: Los conjuntos de números enteros y números reales son infinitos,
pero el espacio en las computadoras no lo es. Por ello sólo es posible representar de
manera exacta un subconjunto pequeño de números.
En el caso particular de la representación de punto flotante, la cantidad limitada de
cifras significativas que almacena da origen a dos tipos de errores cuando se realizan
operaciones aritméticas con ellos:

1. Error de corte: es un tipo de error originado al operar con cantidades de diferente


orden de magnitud.

2. Error de redondeo: se origina cuando se almacena un resultado numérico en la


memoria RAM.

Además de esos dos tipos errores, existe un tercer tipo de error numérico, que
llamaremos error de truncamiento. Este tipo de error no tiene nada que ver con la
representación de punto flotante, sino con el procedimiento de cálculo utilizado.
Error de corte

Este error tiene su origen en los circuitos lógicos del procesador, concretamente en la
unidad aritmética. Se produce por la pérdida de dígitos al sumar o restar cantidades
de diferente orden de magnitud.

Para poder sumar dos números de punto flotante, ambos exponentes deben ser
iguales. Eso significa que los puntos decimales de ambas cantidades deben alinearse:

2.953124821814567E+03
+ 1.296458412832358E-04

Se transforma en
2.953124821814567E+03
+ 0.00000001296458412832358E+03
La pérdida de cifras significativas aumenta a la par de la diferencia que haya entre los
exponentes de los operandos. Existe una diferencia en la cual el error de corte es de
tal magnitud, que se tiene una pérdida total de cifras

2.953124821814567E+07
+ 1.296458412832358E-08

Al operar

2.953124821814567E+07
+ 0.0000000000000001296458412832358E+07

Se perdió la totalidad de las cifras


Para medir en dónde se encuentra la frontera de los errores de corte, existe un
concepto que llamamos épsilon de la máquina, y se define de la siguiente manera

El épsilon de la máquina (EPS), es el número más pequeño tal que

1+EPS > 1

en una máquina en particular


Código para obtener el EPS

#include <stdio.h>

int main(void)
{
double EPS=1.0;
int cont=0;

while((1.0+EPS)>1.0){
EPS /= 2.0;
cont++;
}
EPS *= 2.0;
cont--;

printf(“Epsilon de la maquina: %25.16e", EPS);


printf(“\nEquivalente a 2^-%d", cont);
return 0;
}
Actividad para el estudiante

1. Obtener el épsilon de su calculadora

2. Obtener el épsilon de su computadora

3. Obtener el épsilon de su celular


Error de redondeo

Este error no se produce en los circuitos del procesador, sino al momento de


almacenar los números en la memoria de la computadora.

Una vez que se obtiene un resultado de la unidad aritmética del procesador, dicho
resultado es transferido a la memoria para su almacenamiento. El número de bits
utilizado para almacenar el resultado en la RAM no siempre es igual al de la unidad
aritmética, por lo que dicho resultado debe redondearse al más cercano que se pueda
representar.

El siguiente número sale de la unidad aritmética con 20 cifras de precisión (12bytes)


2.9531248218145673598E+05

Pero si la variable que lo almacena en la RAM está declarada como float (4 bytes, 10
cifras), se deberá redondear al número más cercano posible

2.953124822E+05
Error de redondeo

• Entre 0.1 y 1, hay una cantidad fija de números exactamente representables


• Entre 1 y 10, se tiene la misma cantidad fija de números exactamente
representables que entre 0.1 y 1
• Lo mismo entre 10 y 100
• A medida que el exponente en un número de punto flotante se incrementa, la
precisión disminuye.

2.953124821814567E+05 → 295312.4821814567

2.953124821814567E+09 → 2953124821.814567

2.953124821814567E+13 → 29531248218145.67

• La distancia real entre dos números consecutivos exactamente representables


aumenta con el exponente.

2.953124821814567E+05 - 2.953124821814566E+05 = 0.000000000000001E+05 = 0.0000000001

2.953124821814567E+10 - 2.953124821814566E+10 = 0.000000000000001E+10 = 0.00001

• Si el exponente de un número de punto flotante es igual a la cantidad de cifras


significativas que éste puede almacenar, se trata de un número entero.

También podría gustarte