Tracks
/
Java
Java
/
Lehrplan
/
Bitmanipulation
Bi

Bitmanipulation in Java

3 Übungen

Über Bitmanipulation

Java hat Operatoren, mit denen du die Bits eines integralen Typs manipulieren kannst (ein byte, short, int, long oder char).

Schiebeoperatoren

Mit << verschiebst du Bits nach links und mit >> nach rechts.

// Shift two places to the left
0b0000_1011 << 2;
// # => 0b0010_1100

// Shift two places to the right
0b0000_1011 >> 2;
// # => 0b0000_0010

>> wird auch als vorzeichenbehafteter oder arithmetischer Schiebeoperator bezeichnet, weil das Bit, das er einfügt, dasselbe ist wie sein Vorzeichenbit. Das ist das am weitesten links stehende Bit und es ist 0, wenn der Wert positiv ist, oder 1, wenn er negativ ist. Beim Verschieben nach links mit << werden immer Nullen auf der rechten Seite eingefügt.

// Shift 2 places to the right preserves the sign
// The binary value is two's complement of 0b0000_0110 (or 0x00000026), so the binary representation will be
// 1000_0000_0000_0000_0000_0000_0010_0110
int value = -0x7FFFFFDA;

// Shift two places to the right, preserving the sign bit
value >> 2;
// # => 1110_0000_0000_0000_0000_0000_0000_1001

Verwende stattdessen >>>, wenn beim Verschieben nach rechts Nullen eingefügt werden sollen. Das Einfügen von Nullen beim Verschieben wird auch als logisches Verschieben bezeichnet.

// Shift two places to the right, inserting 0s on the left
value >>> 2;
// # => 0010_0000_0000_0000_0000_0000_0000_1001

Bitweise Operationen

Bitweises UND

Der bitweise UND-Operator (&) nimmt zwei Werte und führt ein UND auf jedem Bit aus. Er vergleicht jedes Bit des ersten Werts mit dem Bit an derselben Position des zweiten Werts. Wenn beide 1 sind, dann ist das Bit des Ergebnisses 1. Andernfalls ist das Bit des Ergebnisses 0.

0b0110_0101 & 0b0011_1100;
// # => 0b0010_0100

Bitweises ODER

Der bitweise ODER-Operator (|) nimmt zwei Werte und führt ein ODER auf jedem Bit aus. Er vergleicht jedes Bit des ersten Werts mit dem Bit an derselben Position des zweiten Werts. Wenn eines der beiden Bits 1 ist, ist das Bit des Ergebnisses 1. Andernfalls ist es 0.

0b0110_0101 | 0b0011_1100;
// # => 0b0111_1101

Bitweises XOR

Der bitweise XOR-Operator (^) führt ein bitweises XOR auf zwei Werten aus. Wie die Operatoren für bitweises UND und bitweises ODER vergleicht er jedes Bit des ersten Werts mit dem Bit an derselben Position des zweiten Werts. Wenn nur eines von beiden 1 ist, ist das resultierende Bit 1. Andernfalls ist es 0.

0b0110_0101 ^ 0b0011_1100;
// # => 0b0101_1001

Bitweises NICHT (~)

Zuletzt kehrt der bitweise NICHT-Operator (~) jedes Bit um. Anders als die vorherigen Operatoren ist dies ein unärer Operator, der nur auf einen Wert wirkt.

~0b0110_0101;
// # => 0b1001_1010
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Bitmanipulation