Em C , o próprio idioma não determina a representação de certos tipos de dados. Pode variar de máquina para máquina, em sistemas embarcados int
pode ter uma largura de 16 bits, embora geralmente seja de 32 bits.
O único requisito é que short int
<= int
<= long int
por tamanho. Além disso, há uma recomendação que int
deve representar a capacidade nativa do processador .
Todos os tipos são assinados. O unsigned
modificador permite que você use o bit mais alto como parte do valor (caso contrário, ele é reservado para o bit de sinal).
Aqui está uma tabela curta dos valores possíveis para os possíveis tipos de dados:
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
Em Java , a Java Language Specification determina a representação dos tipos de dados.
A ordem é: byte
8 bits, short
16 bits, int
32 bits, long
64 bits. Todos esses tipos são assinados , não há versões não assinadas. No entanto, manipulações de bits tratam os números como não assinados (ou seja, manipulando todos os bits corretamente).
O tipo de dados do caractere char
tem 16 bits de largura, não assinado e retém caracteres usando a codificação UTF-16 (no entanto, é possível atribuir um char
número inteiro arbitrário e não assinado de 16 bits que represente um ponto de código invá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