webForumDet fria alternativet
Logga in / Bli medlem

Byte??

Java

4 svar · 229 visningar · startad av Reza

Medlem sedan feb. 2001107 inlägg
Frågan#1

En byte (den primitiva typen) är ju signed.
Så detta: 1000 0001 borde ge –1.
Men nej, det fungerar inte när jag skriver följande:

byte b = 0x81;

För att detta ska fungera måste jag casta, och då får jag –127??
Hur tilldelar jag en byte –1 hexdecimalt?

Medlem sedan juni 2003372 inlägg
#2

Testa

byte b = (byte)0xff;
Medlem sedan feb. 2001107 inlägg
#3

Jo det fungerar, men varför blir 1111 1111 -1?????????

Medlem sedan juni 2003372 inlägg
#4

I java så räknas en byte som -128 till 127. Dvs när du skriver in 10000001 (129) så är ju det mer än 127, eller hur? Det fungerar ungefär som modulus, dvs efter att talet kommer upp i en viss storlek så börjar det om från början igen och räknar ut "resten".
127 motsvarar 127
128 motsvarar -128
129 motsvarar -127
och slutligen:
255 (11111111, 0xff) motsvarar -1

Blev det något klarare kanske?

Medlem sedan feb. 2001107 inlägg
#5

Ja tack

249 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)