2009-06-23 9 views

Respuesta

101

Sí, está definido en The Java Language Specification.

De Section 4.2: Primitive Types and Values:

Los tipos integrales son byte, short, int, y long, cuyos valores son de 8 bits, 16 bits, 32 bits y 64 bits con signo two's- números enteros complementarios, respectivamente, y char, 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
+1

Información excelente :-) – joe

7

int s son 32 bits. Si necesita más, long s son 64 bits.

0

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 
} 
2

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

Cuestiones relacionadas