Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Logische Verschiebung

Unter einer logischen Verschiebung (engl. logical shift) versteht man in der Informatik einen bitweisen Operator, der alle Bits des Operanden verschiebt.

Inhalt4 Abschnitte
  1. 1. Grundidee
  2. 2. Wirkung auf Zahlen
  3. 3. Operatoren in Programmiersprachen
  4. 4. Beispiel

Grundidee

Eine logische Verschiebung, englisch logical shift, ist in der Informatik ein bitweiser Operator. Dabei werden alle Bits eines Operanden um eine vorgegebene Anzahl von Positionen verschoben. Die frei werdenden Bit-Positionen werden in der Regel mit Nullen aufgefüllt.

Im Unterschied zur arithmetischen Verschiebung erhält die logische Verschiebung kein Vorzeichenbit. Sie unterscheidet auch nicht zwischen Exponent und Mantisse einer Zahl. Sie behandelt den Operanden also vor allem als Folge von Bits, nicht als Zahl mit besonderer Bedeutung einzelner Stellen.

Wirkung auf Zahlen

Logische Verschiebungen können ein sinnvoller und effizienter Weg sein, Multiplikationen oder Divisionen von vorzeichenlosen Integer-Zahlen, also Ganzzahlen ohne Vorzeichen, mit Zweierpotenzen durchzuführen.

Eine Verschiebung nach links um n Bits hat bei einer vorzeichenlosen oder vorzeichenbehafteten binären Zahl den Effekt einer Multiplikation mit 2^{n}. Eine Verschiebung nach rechts um n Bits ist bei einer vorzeichenlosen binären Zahl gleichbedeutend mit dem Dividieren durch 2^{n} und anschließendem Abrunden.

Operatoren in Programmiersprachen

Viele Programmiersprachen haben unterschiedliche Operatoren für arithmetische und logische Rechtsverschiebung, weil sich diese Operationen nach rechts unterscheiden. In Java und JavaScript ist zum Beispiel >> der arithmetische Shift-Operator, während >>> der logische Rechtsshift ist. Java hat nur einen Linksshift-Operator <<, weil arithmetische und logische Verschiebung nach links denselben Effekt haben.

In C gibt es nur einen Rechtsshift-Operator >>. Viele C-Compiler entscheiden die Art der Rechtsverschiebung danach, welcher Integer-Datentyp verschoben wird: Häufig werden vorzeichenbehaftete Ganzzahlen arithmetisch verschoben und vorzeichenlose Ganzzahlen logisch.

Beispiele für Operatoren sind: in C und C++ bei vorzeichenlosen Typen << für links und >> für rechts, in Delphi shl und shr, in Java << und >>>, in Ocaml lsl und lsr, in VHDL sll und srl sowie in ARM-Assembler lsl und lsr.

Beispiel

Eine Bit-Sequenz soll logisch um 1 Bit verschoben werden: 0001 0111.

Bei einer logischen Verschiebung nach links um 1 Bit entsteht: 0010 1110.

Bei einer logischen Verschiebung nach rechts um 1 Bit entsteht: 0000 1011.

Weiterlesen

ARM-Architektur Der wesentliche Unterschied des ARM9 gegenüber dem ARM7 ist je ein getrennter Bus für Instruktionen und Daten (Harvard-Architektur). Meist werden diese an … Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Englische Sprache Die englische Sprache (Eigenbezeichnung: [ˈɪŋɡlɪʃ]) ist eine ursprünglich in England beheimatete germanische Sprache, die zum westgermanischen Zweig gehört. Bitweiser Operator Diese Technik kann eingesetzt werden, um Bitfolgen zu manipulieren, die mehrere boolesche Variablen repräsentieren. Bitweise Verschiebungen. Bearbeiten. Bei … Potenz (Mathematik) Eine Potenz (von lateinisch potentia ‚Vermögen, Macht') ist das Ergebnis des Potenzierens (der Exponentiation), das wie das Multiplizieren seinem Ursprung … Mantisse Es handelt sich also, im Fall der normalisierten Mantisse, um eine Zahl zwischen 0 und 1, wenn die erste Nachkommastelle ungleich 0 ist. Andernfalls kann die … Folge (Mathematik) Als Folge oder Sequenz wird in der Mathematik eine Auflistung (Familie) von endlich oder unendlich vielen fortlaufend nummerierten Objekten (beispielsweise … Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es …