definicion java c integer max bit

java - jlabel definicion



valor máximo de entero (12)

En C, el número entero (para la máquina de 32 bits) es de 32 bits y varía de -32,768 a +32,767. En Java, el número entero también es de 32 bits, pero varía de -2,147,483,648 a +2,147,483,647.

No entiendo cómo el rango es diferente en Java, aunque el número de bits sea el mismo. ¿Alguien puede explicar esto?


En C, el entero (para la máquina de 32 bits) es de 32 bits y oscila entre -32768 y +32767.

Incorrecto. El entero con signo de 32 bits en la representación del complemento a 2 tiene el rango -2 31 a 2 31 -1 que es igual a -2,147,483,648 a 2,147,483,647.



El equivalente estricto de java int es long int en C.

Edición: si se define int32_t , entonces es el equivalente en términos de precisión. long int garantiza la precisión de java int , ya que garantiza que tenga un tamaño de al menos 32 bits.


En el rango C para __int32 es –2147483648 a 2147483647. Vea aquí los rangos completos.

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

No hay garantías de que un ''int'' sea de 32 bits, si desea usar variables de un tamaño específico, particularmente cuando escriba código que involucre manipulaciones de bits, debe usar los ''Tipos de enteros estándar''.

En java

El tipo de datos int es un entero complementario de dos bits con signo de 32 bits. Tiene un valor mínimo de -2,147,483,648 y un valor máximo de 2,147,483,647 (inclusive).


En realidad, el tamaño en bits de int , short , long depende de la implementación del compilador.

Por ejemplo, en mi Ubuntu de 64 bits, tengo short en 32 bits, cuando en otra versión de 32 bits de Ubuntu es de 16 bits.


En realidad, es realmente fácil de entender, incluso puede calcularlo con la calculadora de google: tiene 32 bits para un int y las computadoras son binarias, por lo tanto, puede tener 2 valores por bit (spot). Si calcula 2 ^ 32 obtendrá 4,294,967,296. por lo tanto, si divide este número por 2 (ya que la mitad de ellos son enteros negativos y la otra mitad es positiva), entonces obtiene 2,147,483,648. y este número es el mayor int que puede representarse por 32 bits, aunque si presta atención, notará que 2,147,483,648 es mayor que 2,147,483,647 por 1, esto se debe a que uno de los números representa 0, que está justo en el centro, desafortunadamente 2 ^ 32 no es un número impar, por lo tanto, no tiene un solo número en el medio, por lo que los enteros positivos tienen una cifra menos, mientras que los negativos obtienen la mitad completa de 2,147,483,648.

Y eso es. Depende de la máquina no del idioma.


En realidad, es realmente fácil de entender, incluso puede calcularlo con la calculadora de google: tiene 32 bits para un int y las computadoras son binarias, por lo tanto, puede tener 2 valores por bit (spot). Si calcula 2 ^ 32 obtendrá 4,294,967,296.


Esto se debe a que en C: el número entero en una máquina de 32 bits no significa que se usen 32 bits para almacenarlo, también puede ser de 16 bits. Depende de la máquina (dependiente de la implementación).


La definición del lenguaje C especifica rangos mínimos para varios tipos de datos. Para int , este rango mínimo es de -32767 a 32767, lo que significa que un int debe tener al menos 16 bits de ancho. Una implementación es libre de proporcionar un tipo int más amplio con un rango correspondientemente más amplio. Por ejemplo, en el servidor de desarrollo SLES 10 en el que trabajo, el rango es de -2147483647 a 2137483647.

Todavía hay algunos sistemas que usan tipos int 16 bits (Todo el mundo no es un VAX x86), pero hay muchos que usan tipos int 32 bits, y quizás algunos que usan 64 bits.

El lenguaje C fue diseñado para ejecutarse en diferentes arquitecturas. Java fue diseñado para ejecutarse en una máquina virtual que oculta esas diferencias arquitectónicas.


Un entero de 32 bits varía de -2,147,483,648 a 2,147,483,647. Sin embargo, el hecho de que esté en una máquina de 32 bits no significa que su compilador de C use enteros de 32 bits.


en el estándar C, puede usar INT_MAX como el valor máximo ''int'', esta constante debe definirse en "limits.h". Constantes similares se definen para otros tipos ( http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html ), como se indica, estas constantes dependen de la implementación pero tienen un valor mínimo de acuerdo con los bits mínimos Para cada tipo, como se especifica en la norma.


En C , el lenguaje en sí no determina la representación de ciertos tipos de datos. Puede variar de una máquina a otra, en sistemas integrados el int puede tener un ancho de 16 bits, 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 de que int debe representar la capacidad nativa del procesador .

se firman todos los tipos. El modificador unsigned permite usar 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 valores posibles para los tipos de datos posibles:

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 estuvieran sin firmar (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 que utilizan la codificación UTF-16 (sin embargo, es posible asignar a un char un entero de 16 bits sin signo arbitrario que representa un punto de código de carácter 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