Was tun <<= und |=

huckleberry

Bekanntes Mitglied
Was machen diese Codezeilen?

Java:
	long MASK = 0x0;
	for (int i = 0; i < 8; i++) {
		MASK <<= 1;
		MASK |= 0x1;
	}


Java:
MASK <<= 1;
Hier wird die MASK (long, 64bit = 8Byte) um ein Bitnach links geshiftet?
Also wird z.B. aus:
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 wird zu
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x02 ?


Java:
MASK |= 0x1;
Hier wird bei MASK (long, 64bit = 8Byte) gewährleistet, dass das rechtste Bit 1 wird?
Also wird z.B. aus:
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x04 wird zu
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x05 ?

Vielen Dank! MfG Huck
 
Zuletzt bearbeitet:
G

Gast2

Gast
In Java zwar so noch nicht gemacht, aber so lese ich es auch (In C begenen einem solche Sachen deutlich häufiger ^^)
 

huckleberry

Bekanntes Mitglied
[STRIKE]Du machst in deinen Beispielen eine Addition.[/STRIKE]
Addition? Ich dachte, es füllt einen Bitstring vom niederwertigsten an mit 1'en für eine Länge length?

Und >>> ?
Java:
byte [] bs;
//.. bs wird befüllt
long value = bs >>> (startByte - 1) * 8 + (startBit);
 
Zuletzt bearbeitet:

Landei

Top Contributor
[c]bla ??= blubb[/c] bedeutet in Java immer [c]bla = bla ?? blubb[/c].

Also könntest du auch schreiben:

Java:
MASK = MASK << 1;
MASK = MASK | 0x1;
 

Oben