¿Será Java y int
siempre y en todas partes un entero de 32 bits con signo?¿Es un int. Java siempre 32 bits?
Respuesta
Sí, está definido en The Java Language Specification.
De Section 4.2: Primitive Types and Values:
Los tipos integrales son
byte
,short
,int
, ylong
, cuyos valores son de 8 bits, 16 bits, 32 bits y 64 bits con signo two's- números enteros complementarios, respectivamente, ychar
, cuyos valores son enteros sin signo de 16 bits que representan unidades de código UTF-16 (§3.1).
y adicionalmente desde Section 4.2.1: Integral Types and Values:
Los valores de los tipos integrales son números enteros en los siguientes intervalos:
- Para byte, de -128 a 127, inclusive
- Para abreviar, de -32768 a 32767, inclusive
- Para int, desde -2147483648 a 2147483647, inclusive
- Durante mucho tiempo, desde -9223372036854775808 a 9223372036854775807, incluido
- Para Char, de '\ u0000' a '\ uffff' inclusiva, es decir, de 0 a 65535
int
s son 32 bits. Si necesita más, long
s son 64 bits.
Java 8 ha agregado algo de soporte para enteros sin signo. La primitiva int
todavía está firmada, sin embargo, algunos métodos la interpretarán como sin signo.
Los métodos siguientes se añadieron a la Integer class en Java 8:
- compareUnsigned (int x, int y)
- divideUnsigned (int dividendo, int divisor)
- parseUnsignedInt (String s)
- parseUnsignedInt (String s, int radix)
- remainderUnsigned (int dividendo, int divisor)
- toUnsignedLo ng (int x)
- toUnsignedString (int i)
- toUnsignedString (int i, radix int)
Aquí es un ejemplo de uso:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
Como suplementaria, si 64 bits de largo no cumple con su requisito, intente java.math.BigInteger.
Es adecuado para la situación en que el número supera el rango de 64 bit.
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
La salida es:
La suma es: 18446744073709551614
La diferencia es: -18446744073709551615
El producto es: -85070591730234615856620279821087277056
El cociente es: 1
- 1. ¿Está int en C siempre de 32 bits?
- 2. ¿Por qué las operaciones de cambio siempre dan como resultado un int firmado cuando el operando es <32 bits
- 3. uint es de 32 bits, sin importar si el sistema es de 32 o 64 bits?
- 4. Siempre es de 64 bits en las máquinas de 32 y 64 bits
- 5. Java JDK 32 bits frente a 64 bits
- 6. Convertir 12 bit int a 16 o 32 bits
- 7. Compatibilidad con Java de 32 bits frente a 64 bits
- 8. Long int largo en máquinas de 32 bits
- 9. ¿Cómo declaro un entero de 32 bits en Java?
- 10. ¿Se puede hacer el truco de bits 5-Op Log2 (Int 32) en Java?
- 11. ¿iPhone OS es de 64 bits o 32 bits?
- 12. Asignar un flotador de 32 bits a un entero de 32 bits
- 13. encasillamiento Implícito en C (conversión de 32 bits sin signo de 8 bits a T int)
- 14. 64 bits por división de 32 bits
- 15. ¿Cómo es que un kernel de 32 bits puede ejecutar un binario de 64 bits?
- 16. ¿Qué es el tipo "int" compatible en las ventanas de 32 bits y 64 bits en C++?
- 17. Lectura en 16 bits de un registro de 32 bits
- 18. División de 64/32 bits en un procesador con división de 32/16 bits
- 19. ¿Por qué WinAPI usa un int (32 bits) para el tipo BOOL?
- 20. reemplazar byte de 32 bits número
- 21. ¿Cómo puedo empaquetar un int como big endian de 32 bits en Perl?
- 22. ¿Es posible detectar 32 bits frente a 64 bits en un script bash?
- 23. ¿Cuál es la diferencia entre un procesador de 32 bits y de 64 bits?
- 24. ¿Es posible acceder a un dll de 64 bits desde una aplicación de 32 bits?
- 25. ¿Cómo puedo verificar si un binario compilado es de 32 bits o de 64 bits?
- 26. ¿Es un objeto int en Java?
- 27. Alineación de memoria en un procesador Intel de 32 bits
- 28. ¿Es int * array [32] un puntero a una matriz de 32 ints, o una matriz de 32 punteros a int? ¿Importa?
- 29. Java Accesibilidad de 32 bits en una máquina de 64 bits
- 30. Java Native Interface dll de 32 bits en el sistema de 64 bits
Información excelente :-) – joe