Bitweise schieben (Bit Shift)

Bits einer ganzen Zahl links oder rechts verschieben

Bit Shift Rechner

Bitweise Verschiebung

Mit dieser Funktion werden die Bits einer ganzen Zahl nach links oder rechts verschoben. Links bedeutet Multiplikation, rechts Division mit Zweierpotenzen.

Beispiel: 10100110 (binär) = 166 (dez) = A6 (hex)
Anzahl der Verschiebepositionen
Ergebnisse der Bit-Verschiebung
Binär:
Oktal:
Dezimal:
Hexadezimal:

Bit-Shift Visualisierung

Beispiel: 10100110 << 2 (Links-Shift)
Original: 1 0 1 0 0 1 1 0 (166)
Nach 2 Links: 1 0 0 1 1 0 0 0 (664)
Verschiebung nach links
166 × 2² = 166 × 4 = 664
Links-Shift
(<<)

Multiplikation

n << k = n × 2^k

Nullen von rechts
Rechts-Shift
(>>)

Division

n >> k = n ÷ 2^k

Nullen von links
Logische Verschiebung
  • Hinausgeschobene Bits werden verworfen
  • Nullen werden nachgezogen (unabhängig von Richtung)
  • Keine Vorzeichenbehandlung
  • Idealer für unsigned Zahlen

Mathematische Grundlagen der Bit-Verschiebung

Die Bit-Verschiebung ist eine fundamentale Operation, die eine mathematische Beziehung zu Potenzen von 2 hat:

Links-Verschiebung
\[n \ll k = n \times 2^k\]

Jede Position nach links entspricht einer Multiplikation mit 2

Rechts-Verschiebung
\[n \gg k = \lfloor n \div 2^k \rfloor\]

Jede Position nach rechts entspricht einer Division durch 2 (abgerundet)

Bit-Shift Formeln und Beispiele

Allgemeine Shift-Formeln
\[\text{Links: } n \ll k = n \times 2^k\]
\[\text{Rechts: } n \gg k = \lfloor n \div 2^k \rfloor\]

n = Ausgangswert, k = Anzahl Verschiebepositionen

Schritt-für-Schritt Beispiel: 10100110 << 2

Original: 10100110₂ = 166₁₀

Operation: Links-Shift um 2 Positionen

Berechnung: 166 × 2² = 166 × 4 = 664

Binär-Verschiebung:

10100110 → 101001100 → 1010011000

Ergebnis: 1010011000₂ = 664₁₀ = 298₁₆

Rechts-Shift Beispiel: 10100110 >> 2

Original: 10100110₂ = 166₁₀

Operation: Rechts-Shift um 2 Positionen

Berechnung: ⌊166 ÷ 2²⌋ = ⌊166 ÷ 4⌋ = ⌊41.5⌋ = 41

Binär-Verschiebung:

10100110 → 01010011 → 00101001

Ergebnis: 00101001₂ = 41₁₀ = 29₁₆

Weitere Shift-Beispiele
8 << 3 (Links-Shift):
Original: 00001000₂ (8)
Ergebnis: 01000000₂ (64)
Mathematik: 8 × 2³ = 8 × 8 = 64
100 >> 2 (Rechts-Shift):
Original: 01100100₂ (100)
Ergebnis: 00011001₂ (25)
Mathematik: ⌊100 ÷ 4⌋ = 25

Shift-Referenz

Standard-Beispiel
10100110 << 2 = 1010011000 166 × 4 = 664 Links = Multiplikation
Zweierpotenzen

2⁰ = 1

2¹ = 2

2² = 4

2³ = 8

2⁴ = 16

2⁵ = 32

2⁶ = 64

2⁷ = 128

Shift-Operatoren

<<: Links-Shift (Multiplikation)

>>: Rechts-Shift (Division)

Logisch: Nullen nachziehen

Arithmetisch: Vorzeichen behalten

Circular: Bits rotieren

Häufige Anwendungen

Schnelle Multiplikation: n << k

Schnelle Division: n >> k

Bit-Masken erstellen: (1 << n) - 1

Alignment: (addr + 7) >> 3 << 3

Bitweise Verschiebung - Detaillierte Beschreibung

Bitweise Verschiebung

Bei der Bitweise Verschiebung werden die Binär-Zeichen um eine angegebene Anzahl von Bitpositionen nach links oder rechts verschoben. Die Richtungsangabe wird dabei unabhängig von der Rechnerarchitektur immer in der Standardkonvention des Dualsystems verstanden: Links bedeutet Multiplikation und rechts Division mit einer Zweierpotenz.

Grundprinzip:
• Links-Shift: Multiplikation mit 2^n
• Rechts-Shift: Division durch 2^n
• Sehr schnelle Operation
• Bits werden hinausgeschoben und nachgezogen

Register und Hardware

Register der Prozessoren beherbergen eine definierte endliche Anzahl von Bits, weshalb die spezifizierte Anzahl an Bits an einem Ende aus dem Register „hinausgeschoben", während die gleiche Anzahl am anderen Ende „hineingeschoben" („hereingezogen") wird.

Hardware-Implementierung

1. Bits werden physisch verschoben
2. Leere Positionen werden aufgefüllt
3. Überlaufende Bits gehen verloren
4. Operation erfolgt in einem Taktzyklus

Logische Verschiebung

Bei der hier eingesetzten logischen Verschiebung werden die hinausgeschobenen Bits verworfen und Nullen nachgezogen, unabhängig von der Schieberichtung. Im Unterschied zur arithmetische Verschiebungen können keine vorzeichenbehafteten Zahlen verwendet werden.

Logische Verschiebung:
• Immer Nullen nachziehen
• Keine Vorzeichenbehandlung
• Geeignet für unsigned Zahlen
• Einfache Implementierung

Mathematische Anwendungen

Die Bit-Verschiebung ist eine der effizientesten Methoden für Multiplikation und Division mit Zweierpotenzen. Sie wird häufig in der Systemprogrammierung, Grafikverarbeitung und bei Performance-kritischen Anwendungen eingesetzt.

Performance-Vorteile
  • Extrem schnell (1 Taktzyklus)
  • Keine aufwändigen Multiplikationen/Divisionen
  • Ideal für Potenzen von 2
  • Häufig vom Compiler optimiert

Praktische Bit-Shift Beispiele

Array-Indexierung

Szenario: 4-Byte-Alignment

Index: 5

Adresse: 5 << 2 = 20

Effekt: index × 4 (schneller als *4)

Bit-Masken

Szenario: n-Bit-Maske erstellen

Operation: (1 << n) - 1

Beispiel: (1 << 4) - 1 = 15

Ergebnis: 00001111₂ (4-Bit-Maske)

Speicher-Alignment

Szenario: 8-Byte-Alignment

Adresse: 0x12345678

Alignment: (addr + 7) >> 3 << 3

Ergebnis: Nächste 8er-Grenze

Programmier-Tipps
  • Schnelle Multiplikation: n << k statt n * (1<
  • Division durch 2^n: value >> n
  • Bit-Position prüfen: (value >> bit) & 1
  • Overflow beachten: Bits gehen verloren
  • Compiler-Optimierung: x*8 → x<<3
  • Portabilität: Shift-Verhalten beachten