86 votes

Un int Java est-il toujours de 32 bits ?

Will Java int toujours et partout être un entier signé de 32 bits ?

128voto

coobird Points 70356

Oui, il est défini dans La spécification du langage Java .

De Section 4.2 : Types et valeurs primitifs :

Les types intégraux sont byte , short , int y long , 16 bits, 32 bits et 64 bits signés signés à complément à deux, respectivement, et char dont les valeurs sont sont des entiers non signés de 16 bits représentant les unités de code UTF-16 (§3.1).

Et en plus de Section 4.2.1 : Types et valeurs d'intégrales :

Les valeurs des types intégraux sont entiers dans les plages suivantes :

  • Pour l'octet, de -128 à 127, inclus.
  • En bref, de -32768 à 32767, inclus.
  • Pour int, de -2147483648 à 2147483647, inclusivement
  • Pour les longues périodes, de -9223372036854775808 à 9223372036854775807, inclusivement.
  • Pour l'omble, de ' \u0000 à \uffff inclusivement, c'est-à-dire de 0 à 65535.

9voto

drRoflol Points 99

int s sont de 32 bits. Si vous avez besoin de plus, long sont de 64 bits.

8voto

roblovelock Points 181

Java 8 a ajouté un support pour les entiers non signés. int sont toujours signés, mais certaines méthodes les interpréteront comme non signés.

Les méthodes suivantes ont été ajoutées à l Classe de nombres entiers en Java 8 :

  • compareUnsigned(int x, int y)
  • divideUnsigned(int dividend, int divisor)
  • parseUnsignedInt(Chaîne s)
  • parseUnsignedInt(Chaîne s, int radix)
  • remainderUnsigned(int dividend, int divisor)
  • toUnsignedLong(int x)
  • toUnsignedString(int i)
  • toUnsignedString(int i, int radix)

Voici un exemple d'utilisation :

public static void main(String[] args) {
    int uint = Integer.parseUnsignedInt("4294967295");
    System.out.println(uint); // -1
    System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}

4voto

upma Points 517

En complément, si la longueur de 64 bits ne répond pas à votre besoin, essayez java.math.BigInteger .

Il convient aux situations où le nombre est au-delà de la plage de longueur de 64 bits.

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 sortie est :

La somme est : 18446744073709551614

La différence est : -18446744073709551615

Le produit est : -85070591730234615856620279821087277056

Le quotient est : 1

2voto

laginimaineb Points 3049

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X