JavaScript Bitwise Operators
- Vorige pagina JS destruct
- Volgende pagina JS reguliere expressies
JavaScript Bitwise Operators
Bewerker | Naam | Beschrijving |
---|---|---|
& | AND | Stel elke bit in op 1 als beide bits een 1 zijn |
| | OR | Stel elke bit in op 1 als ten minste één van de twee bits een 1 is |
^ | XOR | Stel elke bit in op 1 als er maar één van de twee bits een 1 is |
~ | NOT | Alle bits omkeren |
<< | Nulvulling van links verschuiven | Door van rechts naar links te verschuiven met nul en het meest linkse bit te laten vallen. |
>> | Signaalgevoelige rechterverschuiving | Door van links naar rechts te verschuiven met een kopie van de meest linkse bit en het meest rechtse bit te laten vallen. |
>>> | Nulvulling van rechts verschuiven | Door van links naar rechts te verschuiven en het meest rechtse bit te laten vallen. |
Voorbeeld
Operation | Result | is equivalent | Result |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript uses 32-bit bitwise numbers
JavaScript stores numbers as 64-bit floating-point numbers, but all bitwise operations are performed on 32-bit binary numbers.
Before performing bitwise operations, JavaScript converts the number to a 32-bit signed integer.
After performing bitwise operations, the result will be converted back to a 64-bit JavaScript number.
The above example uses 4-bit unsigned binary numbers. Therefore, ~5 returns 10.
Since JavaScript uses 32-bit signed integers, JavaScript will return -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Signed integers use the leftmost bit as a minus sign.
Bitwise AND
When performing bitwise AND on a pair of bits, if both bits are 1, it returns 1.
Unit example:
Operation | Result |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Four-bit example:
Operation | Result |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bitwise OR
When performing bitwise OR on a pair of bits, if one of the bits is 1, it returns 1:
Unit example
Operation | Result |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Four-bit operation:
Operation | Result |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitwise XOR
When performing bitwise XOR on a pair of bits, if the bits are different, it returns 1:
Unit example:
Operation | Result |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Four-bit example:
Operation | Result |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript bitwise AND (&)
If both bits are 1, the bitwise AND operation returns 1:
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Voorbeeld
var x = 5 & 1;
JavaScript bitwise OR (|)
Als ten minste één cijfer 1 is, geeft de bitoperator OR 1 terug:
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Voorbeeld
var x = 5 | 1;
JavaScript bitoperator XOR (^)
Als de cijfers verschillend zijn, geeft XOR 1 terug:
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Voorbeeld
var x = 5 ^ 1;
JavaScript bitoperator NOT (~)
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Voorbeeld
var x = ~5;
JavaScript (zero-gevuld) bitoperator linksverplaatsing (<<)
Dit is een zero-gevuld linksverplaatsing. Een of meerdere nullen worden van rechts naar links geduwd, en de meest linkse cijfers worden verwijderd:
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Voorbeeld
var x = 5 << 1;
JavaScript (getekend) bitoperator rechtsverplaatsing (>>)
Dit is een rechtsverplaatsing die het teken behoudt. De meest linkse cijfers worden van links naar rechts geduwd, en de meest rechtse cijfers worden verplaatst:
talloze | binair |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Voorbeeld
var x = -5 >> 1;
JavaScript (zero-gevuld) rechtsverplaatsing (>>>)
Dit is een zero-gevuld rechtsverplaatsing. Een of meerdere nullen worden van links naar rechts geduwd, en de meest rechtse cijfers worden verplaatst:
talloze | binair |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Voorbeeld
var x = 5 >>> 1;
32-bit ongetekend integer (binair getal)
Het begrijpen van een 32-bits integer met alleen een ingestelde eenheid is goed te begrijpen:
Binair weergave | Decimale waarde |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Meer geplaatste cijfers onthullen het patroon van het binair getal:
Binair weergave | Decimale waarde |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Negatieve getallen zijn de binair complement van de positieve getallen plus 1:
Binair weergave | Decimale waarde |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Converteer decimaal naar binair
Voorbeeld
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Converteer binair naar decimaal
Voorbeeld
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Vorige pagina JS destruct
- Volgende pagina JS reguliere expressies