| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Left_shift | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Der Linksverschiebungsoperator (<<) gibt eine Zahl oder einen BigInt zurck, deren Binrdarstellung der ersten Operanden um die angegebene Anzahl von Bits nach links verschoben ist. berzhlige Bits, die nach links verschoben werden, werden verworfen, und null Bits werden von rechts eingefhrt.
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
console.log(a << b); // 00000000000000000000000000010100
// Expected output: 20
x << y
Der <<-Operator ist fr zwei Typen von Operanden berladen: Zahl und BigInt. Fr Zahlen gibt der Operator einen 32-Bit-Integer zurck. Fr BigInts gibt der Operator einen BigInt zurck. Er setzt zuerst beide Operanden auf numerische Werte um und prft dann die Typen der Operanden. Fhrt BigInt-Linksverschiebung aus, wenn beide Operanden BigInts werden; andernfalls werden beide Operanden in 32-Bit-Integer umgewandelt und die Zahl wird links verschoben. Ein TypeError wird ausgelst, wenn ein Operand zu einem BigInt wird, aber der andere zu einer Zahl.
Der Operator arbeitet auf der Bitdarstellung des linken Operanden in Zweierkomplement. Zum Beispiel ergibt 9 << 2 36:
9 (base 10): 00000000000000000000000000001001 (base 2)
--------------------------------
9 << 2 (base 10): 00000000000000000000000000100100 (base 2) = 36 (base 10)
Bitweises Verschieben eines 32-Bit-Integer x nach links um y Bits ergibt x * 2 ** y. Beispielsweise 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 hchstwertigen Bits verworfen. Zum Beispiel wird der folgende Integer mit mehr als 32 Bits in einen 32-Bit-Integer umgewandelt:
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
Der rechte Operand wird in einen unsignierten 32-Bit-Integer umgewandelt und dann modulo 32 genommen, sodass der tatschliche Verschiebungswert immer eine positive Ganzzahl zwischen 0 und 31, einschlielich, ist. Zum Beispiel ist 100 << 32 dasselbe wie 100 << 0 (und ergibt 100), weil 32 modulo 32 gleich 0 ist.
Warnung:
Sie knnten Leute sehen, die << 0 verwenden, um Zahlen auf Ganzzahlen zu krzen. Das Linksverschieben einer beliebigen Zahl x um 0 gibt x zurck, umgewandelt in einen 32-Bit-Integer, was zustzlich fhrende Bits fr Zahlen auerhalb des Bereichs von -2147483648 bis 2147483647 entfernt. Verwenden Sie stattdessen Math.trunc().
Fr BigInts gibt es keine Krzung. Konzeptuell verstehen Sie positive BigInts als unendlich viele fhrende 0-Bits und negative BigInts als unendlich viele fhrende 1-Bits.
9 << 3; // 72
// 9 * (2 ** 3) = 9 * (8) = 72
9n << 3n; // 72n
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-left-shift-operator |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |