JS-Tutorial

JS-HAUS JS-Einführung JS Wohin JS-Ausgabe JS-Anweisungen JS-Syntax JS-Kommentare JS-Variablen JS Let JS Konst JS-Operatoren JS-Arithmetik JS-Aufgabe JS-Datentypen JS-Funktionen JS-Objekte JS-Ereignisse JS-Strings JS-String-Methoden Suche nach JS-Strings JS-String-Vorlagen JS-Nummern JS-Zahlenmethoden JS-Arrays JS-Array-Methoden JS-Array-Sortierung JS-Array-Iteration JS-Array-Konstante JS-Daten JS-Datumsformate JS Date Get-Methoden JS-Datumssatzmethoden JS Math JS Zufällig JS Boolesche Werte JS-Vergleiche JS-Bedingungen JS-Schalter JS-Schleife für JS-Schleife für In JS-Schleife für Of JS-Schleife While JS Pause JS-Iterables JS-Sets JS-Karten JS Typeof JS-Typkonvertierung JS Bitweise JS RegExp JS-Fehler JS-Bereich JS Heben Strenger JS-Modus JS dieses Schlüsselwort JS-Pfeilfunktion JS-Klassen JS JSON JS-Debugging JS-Styleguide JS Best Practices JS-Fehler JS-Leistung JS Reservierte Wörter

JS-Versionen

JS-Versionen JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-Geschichte

JS-Objekte

Objektdefinitionen Objekteigenschaften Objektmethoden Objektanzeige Objektzugriffsmethoden Objektkonstruktoren Objekt-Prototypen Objekt-Iterables Objektsätze Objektkarten Objektreferenz

JS-Funktionen

Funktionsdefinitionen Funktionsparameter Funktionsaufruf Funktionsaufruf Funktion anwenden Funktionsschließungen

JS-Klassen

Klasse Einführung Klassenvererbung Klasse statisch

JS asynchron

JS-Rückrufe JS asynchron JS verspricht JS Async/Warten

JS-HTML-DOM

DOM-Einführung DOM-Methoden DOM-Dokument DOM-Elemente DOM-HTML DOM-Formulare DOM-CSS DOM-Animationen DOM-Ereignisse DOM-Ereignis-Listener DOM-Navigation DOM-Knoten DOM-Sammlungen DOM-Knotenlisten

Stückliste des JS-Browsers

JS-Fenster JS-Bildschirm JS-Standort JS-Geschichte JS-Navigator JS-Popup-Warnung JS-Timing JS-Cookies

JS-Web-APIs

Web-API-Einführung Web Forms-API Webprotokoll-API Webspeicher-API Web Worker-API Web-Fetch-API Web-Geolocation-API

JS AJAX

AJAX-Einführung AJAX-XMLHttp AJAX-Anfrage AJAX-Antwort AJAX-XML-Datei AJAX-PHP AJAX ASP AJAX-Datenbank AJAX-Anwendungen AJAX-Beispiele

JS JSON

JSON-Einführung JSON-Syntax JSON vs. XML JSON-Datentypen JSON-Parsing JSON-Stringify JSON-Objekte JSON-Arrays JSON-Server JSON-PHP JSON-HTML JSON JSONP

JS vs. jQuery

jQuery-Selektoren jQuery-HTML jQuery-CSS jQuery-DOM

JS-Grafik

JS-Grafik JS-Leinwand JS Plotly JS Chart.js JS Google-Diagramm JS D3.js

JS-Beispiele

JS-Beispiele JS-HTML-DOM JS-HTML-Eingabe JS-HTML-Objekte JS-HTML-Ereignisse JS-Browser JS-Editor JS-Übungen JS-Quiz JS-Zertifikat

JS-Referenzen

JavaScript-Objekte HTML-DOM-Objekte


Bitweise JavaScript -Operationen


Bitweise JavaScript-Operatoren

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

Beispiele

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript verwendet bitweise 32-Bit-Operanden

JavaScript speichert Zahlen als 64-Bit-Gleitkommazahlen, aber alle bitweisen Operationen werden mit 32-Bit-Binärzahlen ausgeführt.

Bevor eine bitweise Operation ausgeführt wird, konvertiert JavaScript Zahlen in vorzeichenbehaftete 32-Bit-Ganzzahlen.

Nachdem die bitweise Operation durchgeführt wurde, wird das Ergebnis zurück in 64-Bit-JavaScript-Zahlen konvertiert.

Die obigen Beispiele verwenden vorzeichenlose 4-Bit-Binärzahlen. Aus diesem Grund gibt ~ 5 10 zurück.

Da JavaScript 32-Bit-Ganzzahlen mit Vorzeichen verwendet, gibt es nicht 10 zurück, sondern -6.

0000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

Eine Ganzzahl mit Vorzeichen verwendet das Bit ganz links als Minuszeichen.



Bitweises UND

Wenn ein bitweises AND auf ein Bitpaar angewendet wird, gibt es 1 zurück, wenn beide Bits 1 sind.

Ein kleines Beispiel:
BetriebErgebnis
0 & 00
0 & 10
1 & 00
1 & 11
4-Bit-Beispiel:
BetriebErgebnis
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

Bitweises ODER

Wenn ein bitweises ODER an einem Bitpaar ausgeführt wird, gibt es 1 zurück, wenn eines der Bits 1 ist:

Ein kleines Beispiel:
BetriebErgebnis
0 | 00
0 | 1
1 | 01
1 | 11
4-Bit-Beispiel:
BetriebErgebnis
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitweises XOR

Wenn ein bitweises XOR an einem Bitpaar ausgeführt wird, gibt es 1 zurück, wenn die Bits unterschiedlich sind:

Ein kleines Beispiel:
BetriebErgebnis
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
4-Bit-Beispiel:
BetriebErgebnis
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript bitweises UND (&)

Bitweises AND gibt nur dann 1 zurück, wenn beide Bits 1 sind:

DezimalBinär
50000000000000000000000000000101
10000000000000000000000000000001
5 & ​​100000000000000000000000000000001 (1)

Beispiel

let x = 5 & 1;

JavaScript Bitweises ODER (|)

Bitweises ODER gibt 1 zurück, wenn eines der Bits 1 ist:

DezimalBinär
50000000000000000000000000000101
10000000000000000000000000000001
5 | 10000000000000000000000000000101 (5)

Beispiel

let x = 5 | 1;

JavaScript bitweises XOR (^)

Bitwise XOR gibt 1 zurück, wenn die Bits unterschiedlich sind:

DezimalBinär
50000000000000000000000000000101
10000000000000000000000000000001
5 ^ 100000000000000000000000000000100 (4)

Beispiel

let x = 5 ^ 1;

JavaScript bitweise NICHT (~)

DezimalBinär
50000000000000000000000000000101
~511111111111111111111111111111010 (-6)

Beispiel

let x = ~5;

JavaScript (Nullfüllung) Bitweise Linksverschiebung (<<)

Dies ist eine Null-Füll-Linksverschiebung. Ein oder mehrere Nullbits werden von rechts eingeschoben, und die Bits ganz links fallen ab:

DezimalBinär
50000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

Beispiel

let x = 5 << 1;

JavaScript (Vorzeichenerhaltung) Bitweise Rechtsverschiebung (>>)

Dies ist ein Zeichen, das die Rechtsverschiebung bewahrt. Kopien des Bits ganz links werden von links hineingeschoben, und die Bits ganz rechts fallen ab:

DezimalBinär
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-3)

Beispiel

let x = -5 >> 1;

JavaScript (Nullfüllung) Rechtsverschiebung (>>>)

Dies ist eine Verschiebung nach rechts mit Nullfüllung. Ein oder mehrere Nullbits werden von links eingeschoben, und die Bits ganz rechts fallen ab:

DezimalBinär
50000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (2)

Beispiel

let x = 5 >>> 1;

Binäre Zahlen

Binärzahlen mit nur einem gesetzten Bit sind einfach zu verstehen:

Binäre DarstellungDezimalwert
00000000000000000000000000000011
00000000000000000000000000000102
00000000000000000000000000001004
000000000000000000000000000010008
000000000000000000000000001000016
000000000000000000000000010000032
000000000000000000000000100000064

Das Setzen einiger weiterer Bits zeigt das binäre Muster:

Binäre DarstellungDezimalwert
00000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
000000000000000000000000010110145 (32 + 8 + 4 + 1)

JavaScript-Binärzahlen werden im Zweierkomplementformat gespeichert.

Das bedeutet, dass eine negative Zahl das bitweise NICHT der Zahl plus 1 ist:

Binäre DarstellungDezimalwert
00000000000000000000000000001015
11111111111111111111111111111011-5
000000000000000000000000000001106
11111111111111111111111111111010-6
000000000000000000000000010100040
11111111111111111111111111011000-40

Konvertieren von Dezimal in Binär

Beispiel

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

Konvertieren von Binär in Dezimal

Beispiel

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}