valor máximo de inteiro

Em C, o inteiro (para máquinas de 32 bits) é de 32 bits e varia de -32.768 a +32.767. Em Java, o inteiro também é de 32 bits, mas varia de -2.147.483.648 a +2.147.483.647.

Eu não entendo como o intervalo é diferente em Java, mesmo que o número de bits seja o mesmo. Alguém pode explicar isso?

Em C , a linguagem em si não determina a representação de certos tipos de dados. Pode variar de máquina para máquina, em sistemas embarcados, o int pode ser de 16 bits de largura, embora normalmente é de 32 bits.

O único requisito é que short int <= int <= long int por tamanho. Além disso, há uma recomendação de que int deve representar a capacidade nativa do processador .

Todos os tipos são assinados. O modificador unsigned 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 pequena tabela dos valores possíveis para os tipos de dados possíveis:

  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 especificação da linguagem Java 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 sem assinatura. No entanto, as manipulações de bit tratam os números como não assinados (isto é, manipulando todos os bits corretamente).

O tipo de dados do caractere char tem 16 bits de largura, não assinado e contém caracteres usando a codificação UTF-16 (no entanto, é possível atribuir um char um inteiro arbitrário de 16 bits não assinado que representa um ponto de código de caractere 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 

Em C, o inteiro (para máquinas de 32 bits) é de 32 bits e varia de -32768 a +32767.

Errado. O inteiro assinado de 32 bits na representação de complemento de 2 tem o intervalo de -2 31 a 2 31 -1, que é igual a -2,147,483,648 a 2,147,483,647.

Um número inteiro de 32 bits varia de -2.147.483.648 a 2.147.483.647. No entanto, o fato de você estar em uma máquina de 32 bits não significa que seu compilador C use números inteiros de 32 bits.

A definição de linguagem C especifica intervalos mínimos para vários tipos de dados. Para int , esse intervalo mínimo é de -32767 a 32767, o que significa que um int deve ter pelo menos 16 bits de largura. Uma implementação é livre para fornecer um tipo int mais amplo com um intervalo correspondentemente mais amplo. Por exemplo, no servidor de desenvolvimento do SLES 10 em que trabalho, o intervalo é de -2147483647 a 2137483647.

Ainda existem alguns sistemas por aí que usam tipos int 16 bits (All The World não é um VAX x86), mas existem muitos que usam tipos int 32 bits, e talvez alguns que usam 64 bits.

A linguagem C foi projetada para rodar em diferentes arquiteturas. O Java foi projetado para ser executado em uma máquina virtual que oculta essas diferenças arquitetônicas.

Isso porque em C – integer em 32 bits a máquina não significa que 32 bits são usados ​​para armazená-la, ela também pode ter 16 bits. Depende da máquina (dependente da implementação).

O cartaz tem seus tipos de java misturados. em java, seu C in é um curto: curto (16 bits) = -32768 a 32767 int (32 bits) = -2.147.483.648 a 2.147.483.647

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Na verdade, o tamanho em bits do int , short , long depende da implementação do compilador.

Por exemplo, no meu Ubuntu 64 bit eu tenho short em 32 bits, quando em outro um 32bit versão do Ubuntu é de 16 bits.

O equivalente estrito do java int é long int em C.

Edit: Se int32_t é definido, então é o equivalente em termos de precisão. long int garante a precisão do java int , porque é garantia de ter pelo menos 32 bits de tamanho.

No intervalo C, para __int32 é –2147483648 a 2147483647. Consulte aqui as faixas completas.

 unsigned short 0 to 65535 signed short –32768 to 32767 unsigned long 0 to 4294967295 signed long –2147483648 to 2147483647 

Não há garantias de que um ‘int’ será de 32 bits, se você quiser usar variables ​​de um tamanho específico, particularmente ao escrever código que envolva manipulações de bits, você deve usar os ‘Tipos de Integer Padrão’.

Em Java

O tipo de dados int é um inteiro de complemento de dois de 32 bits assinado. Tem um valor mínimo de -2.147.483.648 e um valor máximo de 2.147.483.647 (inclusive).

no padrão C, você pode usar INT_MAX como o valor máximo ‘int’, esta constante deve ser definida em “limits.h”. Constantes semelhantes são definidas para outros tipos ( http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html ), como dito, estas constantes são dependentes da implementação, mas possuem um valor mínimo de acordo com os bits mínimos. para cada tipo, conforme especificado no padrão.

É realmente muito simples de entender, você pode até calculá-lo com a calculadora do google: você tem 32 bits para um int e os computadores são binários, portanto você pode ter 2 valores por bit (spot). se você computar 2 ^ 32 você obterá os 4.294.967.296. Então, se você dividir esse número por 2 (porque metade deles são números inteiros negativos e a outra metade é positiva), você obtém 2.147.483.648. e este número é o maior int que pode ser representado por 32 bits, embora se você prestar atenção você notará que 2.147.483.648 é maior do que 2.147.483.647 por 1, isto é porque um dos números representa 0 que está bem no meio infelizmente 2 ^ 32 não é um número ímpar, portanto, você não tem apenas um número no meio, então os inteiros possíveis possuem uma cifra a menos enquanto os negativos obtêm a metade completa 2.147.483.648.

E é isso. Depende da máquina não no idioma.

É realmente muito simples de entender, você pode até calculá-lo com a calculadora do google: você tem 32 bits para um int e os computadores são binários, portanto você pode ter 2 valores por bit (spot). se você computar 2 ^ 32 você obterá os 4.294.967.296.