Linksverschiebung (<<)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der Linksverschiebungs-Operator (<<) gibt eine Zahl oder ein BigInt zurück, deren binäre Darstellung die erste Operanden um die angegebene Anzahl von Bits nach links verschoben hat. Überschüssige Bits, die nach links verschoben werden, werden verworfen, und null Bits werden von rechts eingefügt.

Probieren Sie es aus

const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010

console.log(a << b); // 00000000000000000000000000010100
// Expected output: 20

Syntax

js
x << y

Beschreibung

Der <<-Operator ist für zwei Typen von Operanden überladen: Zahl und BigInt. Für Zahlen gibt der Operator eine 32-Bit-Ganzzahl zurück. Für BigInts gibt der Operator ein BigInt zurück. Zunächst werden beide Operanden in numerische Werte umgewandelt, und der Typ wird überprüft. Es wird eine BigInt-Linksverschiebung durchgeführt, wenn beide Operanden zu BigInts werden; andernfalls werden beide Operanden in 32-Bit-Ganzzahlen umgewandelt, und es wird eine Linksverschiebung für Zahlen durchgeführt. Ein TypeError wird ausgelöst, wenn ein Operand ein BigInt wird, der andere jedoch eine Zahl bleibt.

Der Operator arbeitet mit der Bitdarstellung des linken Operanden in Zweierkomplement. Zum Beispiel ergibt 9 << 2 den Wert 36:

     9 (base 10): 00000000000000000000000000001001 (base 2)
                  --------------------------------
9 << 2 (base 10): 00000000000000000000000000100100 (base 2) = 36 (base 10)

Das Bitweise Verschieben einer 32-Bit-Ganzzahl x um y Bits nach links entspricht x * 2 ** y. Zum Beispiel ist 9 << 3 äquivalent zu 9 * (2 ** 3) = 9 * (8) = 72.

Wenn der linke Operand eine Zahl mit mehr als 32 Bits ist, werden die bedeutendsten Bits verworfen. Zum Beispiel wird die folgende Ganzzahl mit mehr als 32 Bits in eine 32-Bit-Ganzzahl umgewandelt:

Before: 11100110111110100000000000000110000000000001
After:              10100000000000000110000000000001

Der rechte Operand wird in eine nicht signierte 32-Bit-Ganzzahl umgewandelt und dann modulo 32 genommen, sodass der tatsächliche Verschiebungswert immer eine positive Ganzzahl zwischen 0 und 31 (einschließlich) ist. Zum Beispiel ist 100 << 32 dasselbe wie 100 << 0 (und ergibt 100), da 32 modulo 32 gleich 0 ist.

Für BigInts gibt es keine Beschneidung. Konzeptionell können positive BigInts als eine unendliche Anzahl von führenden 0-Bits und negative BigInts als eine unendliche Anzahl von führenden 1-Bits betrachtet werden.

Das Linksverschieben einer beliebigen Zahl x um 0 Bits gibt x zurück, umgewandelt in eine 32-Bit-Ganzzahl. Verwenden Sie nicht << 0, um Zahlen auf Ganzzahlen zu kürzen; verwenden Sie stattdessen Math.trunc().

Beispiele

Verwendung der Linksverschiebung

js
9 << 3; // 72

// 9 * (2 ** 3) = 9 * (8) = 72

9n << 3n; // 72n

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-left-shift-operator

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Bitwise left shift (a << b)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch