<< und &

Status
Nicht offen für weitere Antworten.
J

Jie

Gast
Hallo,

kann jemand bitte mir sagen, in den folgenden Code was << und & bedeutet? und das Ergebnis aussehen soll?

int state = 50;
int value = 2 << 5;
String result = "test " + (state & value);
System.out.println(result);

Danke

Jie
 

0x7F800000

Top Contributor
sind beides operationen auf einzelnen bits.

mit << kann man die bits nach links shiften, also, bei integer dürfte es in etwa so aussehen:

2 entspricht im binären system:
00000000000000000000000000000010
2<<5 dürfte in etwa:
00000000000000000000000001000000
ergeben, was in der dezimaldarstellung wieder 2^6=64 ist

mit & kann man die bits mit dem binären "und" verknüpfen, also 1&1=1 1&0=0 0&1=0 0&0=0

also:

50=32+16+2=2^5+2^4+2^1=00000000000000000000000000110010

insgesamt:
Code:
   00000000000000000000000000110010
&  00000000000000000000000001000000
=  00000000000000000000000000000000

es dürfte also einfach eine 0 rauskommen, wenn ich mich hier nicht verzählt hab...

edit: mit Integer.toBinaryString(int i) kannst du prima verfolgen, was da im einzelnen passiert...
 
J

Jie

Gast
Hallo,

ich habe noch eine weitere Frage:

int state = 0;
Button b;
final public static int B_INT = 1 << 9;

state |= b.getSelection() ? B_INT : 0;
Was bedeutet diese Zeile, insbesondere |=?
Aus b.getSelection kommt ein boolean-Wert

Danke

Jie
 

Leroy42

Top Contributor
Code:
a |= b
ist die Kurzform von
Code:
a = a|b
 

Leroy42

Top Contributor
Oder alles anders geschrieben:
Code:
if (b.getSelection())
  state = state | B_INT;
else
  state = state | 0;
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben