2.2. Números Enteros.
anterior :: indice :: siguiente
Este tipo de dato nos permite definir el rango de valores numéricos a usarse en una variable. Los tipos de datos para usar como números enteros son los siguientes:
Identificador
|
Rango
|
Tamaño en bytes
|
desde
|
hasta
|
Int64 |
-9223372036854775808 |
9223372036854775807
|
8 bytes
|
Integer |
-32768 |
32767
|
2 bytes
|
LongInt |
-2147483648 |
2147483647
|
4 bytes
|
SmallInt |
-32768 |
32767
|
2 bytes
|
ShortInt |
-128 |
127
|
1 byte
|
Qword |
0 |
18446744073709551615
|
8 bytes
|
Cardinal |
0 |
4294967295
|
4 bytes
|
LongWord |
0 |
4294967295
|
4 bytes
|
Word |
0 |
65535
|
2 bytes
|
Byte
|
0
|
255
|
1 byte
|
|
Si se asigna un valor numérico a una variable fuera del rango definido por su tipo de dato, entonces el valor asignado a dicha variable es truncado al tamaño en bytes de la variable que recibe dicho valor.
Por ejemplo, si se declara una variable como de tipo integer y otra de tipo byte, la variable de tipo byte puede ser asignada a la variable de tipo integer, ya que los datos de tipo byte están dentro del rango permitido del tipo integer. Pero si se asigna una variable de tipo integer, que tiene un dato dentro del rango de 0 a 255, entonces puede ser asignado a una variable de tipo byte, pero si no estuviera dentro del rango de 0 a 255, entonces el valor se trunca asignando sólo un byte de los dos bytes que usa el tipo de dato integer. A continuación un ejemplo:
| |
{$codepage UTF8}
VAR
a : integer;
b : byte;
BEGIN
// es correcto, 230 es un numero dentro del
// rango del tipo integer
b:=230;
a:=b;
Writeln(a);
Writeln(b);
// El resultado se trunca, ya que 548 no esta
// dentro del rango del tipo byte (0-255)
a:=$0224; //548 en decimal
b:=a;
Writeln(a); //muestra 548=$0224
Writeln(b); //muestra 36 = $24
// es correcto, 100 es un numero dentro del
// rango de tipo byte (0-255)
a:=100;
b:=a;
Writeln(a);
Writeln(b);
END. |
| |
Código fuente 1: Asignación de datos dentro y fuera del rango. |
Al haber varios tipos de datos para los números enteros, surge la siguiente pregunta: ¿Cual es el más recomendado usar? eso realmente depende mucho del programa que se esté haciendo y de cuanto se desea ahorrar en memoria.
Por ejemplo si se hace un programa para manipular una imagen digital, con una profundidad de color de 32 bits (32/8 = 4 bytes), entonces lo recomendado es usar tipos de datos de 4 bytes, como el longint para poder manipular cada pixel de la imagen.
Pero si la imagen digital es de 8 bits (8 bits=1 byte), entonces se deben usar tipos de datos de 1 byte.
anterior :: indice :: siguiente |