noch mal bitoperater

  • Themenstarter Themenstarter azur
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

azur

Gast
ich steig durch die bitoperater immer noch nicht durch.

Quellcode:

byte b1 = 100;
byte b2 = (byte)200;
System.out.println( b1 ); // 100
System.out.println( b2 ); // -56

Warum wird bei b2 56 ausgegeben und warum muss hinter dr Deklarierung noch ein (byte) stehen?

eine Frage hab ich noch: Wieso gibt er hier auf einmal 200 aus??

byte b1 = 100;
byte b2 = (byte)200;
System.out.println( b1 );
System.out.println( b2 & 0xff);


gibt es vielleicht noch ein anderes tutorial, was die bitoperateren ein bisschen ausführlciher beschreibt?

cu azur.
 
Also mal auf die Schnelle,

der Datentyp byte ist in Java als Wert zwischen -128 und +127 definiert. Ein Byte sind immer 8 Bit.
Java verwendet hierbei das 8. Bit als Vorzeichen,

Wenn es also gesetzt ist, dann hast Du plötzlich -128.
D.h. alle Zahlen bis 127 lassen sich normal darstellen, danach wird anders interpretiert. Z.B. wenn Du 128 eingibst interpretiert die JVM diesen Wert als -128.
Bei Eingabe von 129 wird 1+(-128) gerechnet -> 2er Komplement Darstellung (glaub ich ?).

Deine 2. Beobachtung ist meines Erachtens auf die JVM zurück zu führen, denn die Operation
b2 &0xff liefert einen Integer Wert zurück NACHDEM die Bitoperation durchgeführt wurde.
 
hallo,
danke für deine Antwort. Das hab ich jetzt verstanden. ich weiß aber immernoch nciht warum das so ist.

Nach der Ausgabe von bytes über 127 versteh ich jetzt absolut nichts mehr. Dann werden auf einmal bytes in Zeichenketten umgewandelt und es ist wirklich nichts erklärt.

gibt es vielleicht ein tutorial, wo die bitoperatoren genau erklärt sind??

azur
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben