En C , el lenguaje en sí no determina la representación de ciertos tipos de datos. Puede variar de máquina a máquina, en sistemas integrados int
puede tener 16 bits de ancho, aunque generalmente es de 32 bits.
El único requisito es que short int
<= int
<= long int
por tamaño. Además, hay una recomendación que int
debe representar la capacidad nativa del procesador .
Todos los tipos están firmados. El unsigned
modificador le permite utilizar el bit más alto como parte del valor (de lo contrario, está reservado para el bit de signo).
Aquí hay una breve tabla de los posibles valores para los posibles tipos de datos:
width minimum maximum
signed 8 bit -128 +127
signed 16 bit -32 768 +32 767
signed 32 bit -2 147 483 648 +2 147 483 647
signed 64 bit -9 223 372 036 854 775 808 +9 223 372 036 854 775 807
unsigned 8 bit 0 +255
unsigned 16 bit 0 +65 535
unsigned 32 bit 0 +4 294 967 295
unsigned 64 bit 0 +18 446 744 073 709 551 615
En Java , la Especificación del lenguaje Java determina la representación de los tipos de datos.
El orden es: byte
8 bits, short
16 bits, int
32 bits, long
64 bits. Todos estos tipos están firmados , no hay versiones sin firmar. Sin embargo, las manipulaciones de bits tratan los números como si no estuvieran firmados (es decir, manejando todos los bits correctamente).
El tipo de datos de caracteres char
es de 16 bits de ancho, sin signo y contiene caracteres con codificación UTF-16 (sin embargo, es posible asignar un char
entero arbitrario de 16 bits sin signo que represente un punto de código de caracteres no válido)
width minimum maximum
SIGNED
byte: 8 bit -128 +127
short: 16 bit -32 768 +32 767
int: 32 bit -2 147 483 648 +2 147 483 647
long: 64 bit -9 223 372 036 854 775 808 +9 223 372 036 854 775 807
UNSIGNED
char 16 bit 0 +65 535