Java et les types signés, ça marche comment?
Bonsoir,
Dans le cadre d'un projet, je dois réalisé une appli Java qui communique avec plusieurs matériels via JNI. Du coup, j'ai besoins de travailler en unsigned pour pas mal de chose. La plupart du temps, j'utilise le type "byte" (8bits signé). Mais j'ai un problème...
Code:
1 2 3 4 5 6 7 8 9
| byte test = -1;
System.out.println(Integer.toBinaryString(test));
//11111111111111111111111111111111
test = 125;
System.out.println(Integer.toBinaryString(test));
//1111101 |
Donc, si je me souvient bien de mes cours d'infos, mon byte Java est sur 8 bits. Il est signé, donc le dernier bit est utilisé pour le signe. Du coup, on se retrouve avec une valeur max de 2⁷-1 (127).
Quelqu'un peut m'expliquer pourquoi la valeur de "-1" tient sur 32 bits??? J'avoue que je comprends pas car je m'attendrais à une valeur de "11111111" (sur 8 bits).
Merci d'avance :ccool: