Bitweises UND

Status
Nicht offen für weitere Antworten.

Final_guy

Aktives Mitglied
Tach allerseits,

ich will es kurz machen: Warum ändert folgende Operation den Integer-Wert eines Bytes?

Code:
 int v = data[i] & 0xff;

In meinem jugenlichen Leichtsinn würde ich sagen, dass ein Bitweises UND mit dem 1-Byte genauso viel am ursprünglichen Byte ändert wie das ODER mit dem 0-Byte - nämlich gar nichts. Aber offenbar irre ich mich da. ???:L Kann mich jemand von euch erleuchten, bitte? Danke.
 
G

Gelöschtes Mitglied 5909

Gast
was ist denn data ?
Code:
		byte b = 0x12;
		int i = (b & 0xFF);
		System.out.println(b + " " + i);

18 18
 

Der Müde Joe

Top Contributor
int : 32 bit (1 Vorzeichen + 31 Zahl)
byte: 8bit (1 Vz. + 7Zahl)

nun zB -1

als byte
11111111 = -1
als int
11111111 11111111 11111111 1111111 = -1

und nun mit AND:
xxxxxxxxxx xxxxxxxxx xxxxxxxxx 11111111 = -1 (x als platzhalter)
00000000 00000000 00000000 11111111 = 0xFF
------------------------------------------------------------
00000000 00000000 00000000 11111111 = 255 (als int)
 

Final_guy

Aktives Mitglied
Hallo,

@rail: Ja hast recht, der Codeschnipsel war wohl ein wenig zu kurz. Aber da nun meine Frage beantwortet ist, bleibe ich die Nachbesserung einfach mal schuldig. :roll:


@derMüdeJoe: Danke. Das heißt, dass das "verunden" mit 0xff der Konvertierung nach int und dem initialisieren der ersten drei Byte dient, richtig? Fein, danke! :toll:
 

Der Müde Joe

Top Contributor
Final_guy hat gesagt.:
@derMüdeJoe: Danke. Das heißt, dass das "verunden" mit 0xff der Konvertierung nach int und dem initialisieren der ersten drei Byte dient, richtig?

???:L Hääää?

[0-127] bleit die Zahl bei AND 0xFF
[-128 - -1] die Zahl ist nachher 256 + x (wobei x negativ also eigentlich minus)

also 1 bleibt 1
und -1 wird zu 255
und -128 zu 128 (da 10000000 als byte)

das Vorzeichen ist einfach das 25. bit im Integer und nicht mehr das Vorzeichen wie im byte

EDIT:
ach jetzt versteh ich..die ersten 24 bit sind halt im byte nicht da, drum einfach Nullen
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben