JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JavaScript Bitwise Operations


JavaScript Bitwise Operators

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

Voorbeelde

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 gebruik 32 bisse bitsgewyse operande

JavaScript stoor getalle as 64 bisse swaaipuntgetalle, maar alle bitsgewyse bewerkings word op 32 bisse binêre getalle uitgevoer.

Voordat 'n bissgewyse bewerking uitgevoer word, skakel JavaScript getalle om na 32 bisse getekende heelgetalle.

Nadat die bitsgewyse bewerking uitgevoer is, word die resultaat terug na 64 bisse JavaScript-nommers omgeskakel.

Die voorbeelde hierbo gebruik 4 bisse ongetekende binêre getalle. As gevolg hiervan gee ~ 5 10 terug.

Aangesien JavaScript 32 bisse getekende heelgetalle gebruik, sal dit nie 10 gee nie. Dit sal -6 terugstuur.

000000000000000000000000000000101 (5)

111111111111111111111111111111010 (~5 = -6)

'n Getekende heelgetal gebruik die bietjie mees links as die minusteken.



Bietjiegewys EN

Wanneer 'n bissgewyse EN op 'n paar bisse uitgevoer word, gee dit 1 terug as albei bisse 1 is.

Een bietjie voorbeeld:
OperasieResultaat
0 en 00
0 en 10
1 en 00
1 en 11
4 bisse voorbeeld:
OperasieResultaat
1111 en 00000000
1111 en 00010001
1111 en 00100010
1111 en 01000100

Bitgewys OF

Wanneer 'n bissgewyse OF op 'n paar bisse uitgevoer word, gee dit 1 terug as een van die bisse 1 is:

Een bietjie voorbeeld:
OperasieResultaat
0 | 00
0 | 1
1 | 01
1 | 11
4 bisse voorbeeld:
OperasieResultaat
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitgewys XOR

Wanneer 'n bissgewyse XOR op 'n paar bisse uitgevoer word, gee dit 1 terug as die bisse verskillend is:

Een bietjie voorbeeld:
OperasieResultaat
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
4 bisse voorbeeld:
OperasieResultaat
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitwise EN (&)

Bitsgewys EN gee slegs 1 terug as beide bisse 1 is:

DesimaleBinêre
50000000000000000000000000000000101
100000000000000000000000000000000001
5 en 10000000000000000000000000000000001 (1)

Voorbeeld

let x = 5 & 1;

JavaScript bitsgewys OF (|)

Bitsgewys OF gee 1 terug as een van die bisse 1 is:

DesimaleBinêre
50000000000000000000000000000000101
100000000000000000000000000000000001
5 | 1000000000000000000000000000000101 (5)

Voorbeeld

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitwise XOR gee 1 terug as die bisse verskil:

DesimaleBinêre
50000000000000000000000000000000101
100000000000000000000000000000000001
5 ^ 1000000000000000000000000000000100 (4)

Voorbeeld

let x = 5 ^ 1;

JavaScript Bitwise NIE (~)

DesimaleBinêre
50000000000000000000000000000000101
~51111111111111111111111111111111010 (-6)

Voorbeeld

let x = ~5;

JavaScript (Zero Fill) Bitsgewys linksverskuiwing (<<)

Dit is 'n nulvul-linkerskuif. Een of meer nulpunte word van regs af ingedruk, en die linkerkantste stukkies val af:

DesimaleBinêre
50000000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

Voorbeeld

let x = 5 << 1;

JavaScript (Bewaring van tekens) Bitsgewys Regsverskuiwing (>>)

Dit is 'n teken wat regsverskuiwing bewaar. Afskrifte van die linkerkantste stukkie word van links af ingedruk, en die mees regte stukkies val af:

DesimaleBinêre
-511111111111111111111111111111111011
-5 >> 11111111111111111111111111111111101 (-3)

Voorbeeld

let x = -5 >> 1;

JavaScript (nul invul) Regsverskuiwing (>>>)

Dit is 'n nulvul regsverskuiwing. Een of meer nulpunte word van links af ingedruk, en die mees regterkantse stukkies val af:

DesimaleBinêre
50000000000000000000000000000000101
5 >>> 10000000000000000000000000000000010 (2)

Voorbeeld

let x = 5 >>> 1;

Binêre getalle

Binêre getalle met slegs een bietjie stel is maklik om te verstaan:

Binêre verteenwoordigingDesimale waarde
000000000000000000000000000000000011
00000000000000000000000000000000102
0000000000000000000000000000001004
0000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

Deur nog 'n paar stukkies in te stel, onthul die binêre patroon:

Binêre verteenwoordigingDesimale waarde
00000000000000000000000000000001015 (4 + 1)
00000000000000000000000000000110113 (8 + 4 + 1)
00000000000000000000000000010110145 (32 + 8 + 4 + 1)

JavaScript-binêre getalle word in twee se komplementformaat gestoor.

Dit beteken dat 'n negatiewe getal die bitsgewys NIE van die getal plus 1 is nie:

Binêre verteenwoordigingDesimale waarde
00000000000000000000000000000001015
11111111111111111111111111111111011-5
00000000000000000000000000000001106
11111111111111111111111111111111010-6
0000000000000000000000000010100040
1111111111111111111111111111011000-40

Omskakeling van desimale na binêre

Voorbeeld

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

Skakel Binêr na Desimale om

Voorbeeld

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