Byte??

Java

4 svar · 235 visningar · startad av Reza

Medlem sedan feb. 2001107 inlägg
Trådstart#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

417 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
146 ms — deklarationer (db)
128 ms — hämta statistik (db)
140 ms — hämta tråd, inlägg och bilagor (db)
146 ms — ändringar (db)