Les converssions en java

Fermé
Scipion - 26 déc. 2008 à 15:37
 Scipion - 26 déc. 2008 à 16:39
Bonjour,
voilà j'aurai deux petites questions en poser en Java concernant les converssions élargissantes et rétrécissantes et une concernant les booleans :
La première : Si je convertis une valeur de type int en type byte, est-ce que les 24 premiers bits vont être coupé pour seulement laisser 8 bits à droite(8 bits inchangés !) ?

La deuxième : Si je veux convertir un char en int, il faudra que je rajoute 16 bits, que le compilateur rajoutera implicitement. Mais est-ce 16 bits nuls sont ajoutés à gauche des 16 premiers bits de mon char ou est-ce autrement ?

La troisième : Est-ce que le langage Java spécifie la représentation interne des valeurs de type boolean ?

Merci d'avance !
A voir également:

2 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
26 déc. 2008 à 16:09
Si je convertis une valeur de type int en type byte, est-ce que les 24 premiers bits vont être coupé pour seulement laisser 8 bits à droite(8 bits inchangés !) ?
Exactement, il va prendre les 8 bits à droite, attention que comme on travaille en nombre signés de base les bytes vont de -128 à 127, ainsi 128(int) >>> -128(byte) >>> 1000 0000 (2).

Si je veux convertir un char en int, il faudra que je rajoute 16 bits, que le compilateur rajoutera implicitement. Mais est-ce 16 bits nuls sont ajoutés à gauche des 16 premiers bits de mon char ou est-ce autrement ?
C'est bien des bits nuls qui sont ajouté, sans quoi tu perdrait la valeur de ton char. Donc si je convertit je char 'a' en int, je conserve bien sa valeur 97 par exemple, ce qui équivaut à 00...00 0110 0001

La troisième : Est-ce que le langage Java spécifie la représentation interne des valeurs de type boolean ?
Tu parle du fait que true = 1 et false = 0 ? Si c'est le cas, non. Par exemple en Java si tu utilise les types primitifs, tu ne peux pas comparer deux booléens.
boolean test1 = true;
boolean test2 = false;
		
if(test1 > test2)
// Erreur à la compilation


Tu ne peux pas non plus convertir un boolean en un autre type primitif.

Par contre si tu le souhaite tu peux utiliser le type objet Boolean qui lui par exemple te permet déjà d'utiliser le compareTo(), ...
1
Ca va, super, exactement ce que je pensais merci bien :).
0