webForumDet fria alternativet

Byte??

4 svar · 227 visningar · startad av Reza

RezaMedlem sedan feb. 2001107 inlägg
#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?

Aleph_OneMedlem sedan juni 2003372 inlägg
#2

Testa

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

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

Aleph_OneMedlem 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?

RezaMedlem sedan feb. 2001107 inlägg
#5

Ja tack

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)