JS-zelfstudie

JS HOME JS Introductie JS Waarheen? JS-uitgang JS-verklaringen JS-syntaxis JS-opmerkingen JS-variabelen JS Let JS Const JS-operators JS Rekenen JS-opdracht JS-gegevenstypen JS-functies JS-objecten JS-evenementen JS-snaren JS String-methoden JS String zoeken JS String-sjablonen JS-nummers JS-nummermethoden JS-arrays JS-array-methoden JS-array sorteren JS-array-iteratie JS Array Const JS-datums JS-datumnotaties JS Datum Ophaalmethoden Methoden voor het instellen van JS-datum JS Math JS Willekeurig JS Booleans JS-vergelijkingen JS-voorwaarden JS-schakelaar JS Loop For JS-lus voor binnen JS Loop For Of JS-lus terwijl JS Break JS-iteraties JS-sets JS-kaarten JS Typeof JS Type conversie JS Bitwise JS RegExp JS-fouten JS-bereik JS Hijsen JS strikte modus JS dit trefwoord JS-pijlfunctie JS-lessen JS JSON JS-foutopsporing JS-stijlgids JS-best practices JS-fouten JS-prestaties JS Gereserveerde Woorden

JS-versies

JS-versies JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-geschiedenis

JS-objecten

Objectdefinities Objecteigenschappen Objectmethoden Objectweergave Objectaccessoires Objectconstructeurs Objectprototypes Object-Iterables Objectsets Objectkaarten Objectreferentie

JS-functies

Functiedefinities Functieparameters: Functie-aanroep Functie-oproep: Functie Toepassen Functie Sluitingen

JS-lessen

Klas Intro Klasse Overerving Klasse Statisch

JS Asynchrone

JS-callbacks JS asynchroon JS belooft JS Async/Wachten

JS HTML DOM

DOM Intro DOM-methoden DOM-document DOM-elementen DOM HTML DOM-formulieren DOM-CSS DOM-animaties DOM-evenementen DOM-gebeurtenisluisteraar DOM-navigatie DOM-knooppunten DOM-collecties DOM-knooppuntlijsten

JS-browserstuklijst

JS-venster JS-scherm JS-locatie JS-geschiedenis JS-navigator JS pop-upwaarschuwing JS-timing JS-koekjes

JS Web API's

Introductie web-API Web Forms API Webgeschiedenis-API Webopslag-API Web Worker-API Web Fetch-API Webgeolocatie-API

JS AJAX

Ajax-intro AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

JS JSON

JSON-intro JSON-syntaxis JSON versus XML JSON-gegevenstypen JSON ontleden JSON Stringify JSON-objecten JSON-arrays JSON-server JSON PHP JSON HTML JSON JSONP

JS versus jQuery

jQuery-kiezers jQuery HTML jQuery CSS jQuery DOM

JS-graphics

JS-graphics JS Canvas JS Plotly JS Chart.js JS Google-kaart JS D3.js

JS-voorbeelden

JS-voorbeelden JS HTML DOM JS HTML-invoer JS HTML-objecten JS HTML-evenementen JS-browser JS-editor JS-oefeningen JS-quiz JS-certificaat

JS-referenties

JavaScript-objecten HTML DOM-objecten


JavaScript Bitwise-bewerkingen


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

Voorbeelden

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 gebruikt 32 bits bitsgewijze operanden

JavaScript slaat getallen op als 64-bits drijvende-kommagetallen, maar alle bitsgewijze bewerkingen worden uitgevoerd op 32-bits binaire getallen.

Voordat een bitsgewijze bewerking wordt uitgevoerd, converteert JavaScript getallen naar 32-bits gehele getallen met teken.

Nadat de bitsgewijze bewerking is uitgevoerd, wordt het resultaat terug geconverteerd naar 64-bits JavaScript-nummers.

De bovenstaande voorbeelden gebruiken 4-bits niet-ondertekende binaire getallen. Hierdoor levert ~ 5 10 op.

Aangezien JavaScript 32-bits gehele getallen met teken gebruikt, zal het geen 10 retourneren. Het zal -6 teruggeven.

0000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

Een geheel getal met teken gebruikt het meest linkse bit als minteken.



Bitgewijs EN

Wanneer een bitsgewijze EN wordt uitgevoerd op een paar bits, wordt 1 geretourneerd als beide bits 1 zijn.

Een beetje voorbeeld:
OperatieResultaat
0 & 00
0 & 10
1 & 00
1 & 11
4 bits voorbeeld:
OperatieResultaat
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

Bitgewijs OF

Wanneer een bitsgewijze OF wordt uitgevoerd op een paar bits, wordt 1 geretourneerd als een van de bits 1:

Een beetje voorbeeld:
OperatieResultaat
0 | 00
0 | 1
1 | 01
1 | 11
4 bits voorbeeld:
OperatieResultaat
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitsgewijze XOR

Wanneer een bitsgewijze XOR wordt uitgevoerd op een paar bits, wordt 1 geretourneerd als de bits verschillend zijn:

Een beetje voorbeeld:
OperatieResultaat
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
4 bits voorbeeld:
OperatieResultaat
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitgewijs EN (&)

Bitgewijs AND retourneert alleen 1 als beide bits 1 zijn:

Decimalebinair
50000000000000000000000000000101
100000000000000000000000000000001
5 & ​​100000000000000000000000000000001 (1)

Voorbeeld

let x = 5 & 1;

JavaScript Bitgewijs OF (|)

Bitsgewijze OF retourneert 1 als een van de bits 1 is:

Decimalebinair
50000000000000000000000000000101
100000000000000000000000000000001
5 | 10000000000000000000000000000101 (5)

Voorbeeld

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitwise XOR retourneert 1 als de bits verschillend zijn:

Decimalebinair
50000000000000000000000000000101
100000000000000000000000000000001
5 ^ 10000000000000000000000000000100 (4)

Voorbeeld

let x = 5 ^ 1;

JavaScript Bitgewijs NIET (~)

Decimalebinair
50000000000000000000000000000101
~511111111111111111111111111111010 (-6)

Voorbeeld

let x = ~5;

JavaScript (nulvulling) Bitsgewijze verschuiving naar links (<<)

Dit is een nulvulling naar links. Een of meer nul-bits worden van rechts naar binnen geduwd en de meest linkse bits vallen eraf:

Decimalebinair
50000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

Voorbeeld

let x = 5 << 1;

JavaScript (tekenbehoud) Bitsgewijze verschuiving naar rechts (>>)

Dit is een teken dat de juiste verschuiving behoudt. Kopieën van het meest linkse bit worden vanaf de linkerkant naar binnen geduwd en de meest rechtse bits vallen eraf:

Decimalebinair
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-3)

Voorbeeld

let x = -5 >> 1;

JavaScript (nulvulling) Shift naar rechts (>>>)

Dit is een nulvulling naar rechts. Een of meer nul-bits worden van links naar binnen geduwd en de meest rechtse bits vallen eraf:

Decimalebinair
50000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (2)

Voorbeeld

let x = 5 >>> 1;

Binaire getallen

Binaire getallen met slechts één bitset zijn gemakkelijk te begrijpen:

Binaire weergavedecimale waarde
000000000000000000000000000000011
000000000000000000000000000000102
00000000000000000000000001004
000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

Door nog een paar bits in te stellen, wordt het binaire patroon onthuld:

Binaire weergavedecimale waarde
00000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (32 + 8 + 4 + 1)

JavaScript-binaire getallen worden opgeslagen in two's complement-formaat.

Dit betekent dat een negatief getal de bitsgewijze NIET is van het getal plus 1:

Binaire weergavedecimale waarde
00000000000000000000000000001015
11111111111111111111111111111011-5
0000000000000000000000000001106
11111111111111111111111111111010-6
0000000000000000000000000010100040
111111111111111111111111111011000-40

Decimaal naar binair converteren

Voorbeeld

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

Binair naar decimaal converteren

Voorbeeld

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