Bonjour j'ai un soucis avec les conversion explicite de short vers byte, j'ai essayé de convertir en base 2, rien n'y fait, je ne comprends toujours pas.

Voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public class MonCasting{
public static void main(String[] args) {
long l = 10;
int i = (int) l;
short s = 175;
byte b = (byte) s;
System.out.println("Value of i: " + i );
System.out.println("Value of b: " + b);
}
}
La sortie fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Value of i: 10
Value of b: -81
Mon gros problème c'est de comprendre byte b = (byte) s; en fait quand je converti s dont la valeur est 175, en base 2 j'ai : 0000000010101111, jusqu'à là aucun problème, puis les bit s'étendent de -127 à 128, et font 8 bits.
En convertissant -81 en base 2 j'obtiens : 1010111 et c''est là où je ne comprends plus du tout.
Que s'est il passé pour pour partir
0000000010101111 ==> et obtenir
1010111
Je vous remercie pour toute aide.

Bien à vous.