V tomto výučbe sa pomocou príkladov dozviete o bitových operátoroch JavaScriptu a jeho typoch.
Bitové operátory JavaScriptu
Bitové operátory považujú svoje operandy za množinu 32-bitových binárnych číslic (nuly a jednotky) a vykonávajú akcie. Výsledok sa však zobrazuje ako desatinná hodnota.
Operátorov | názov | Príklad |
---|---|---|
& | Bitové AND | x & y |
| | Bitové ALEBO | x | y |
^ | Bitový XOR | x y |
~ | Bitove NIE | ~x |
<< | Lavy shift | x << y |
>> | Znak šíriaci pravý posun | x>> y |
>>> | Pravý posun s nulovým vyplnením | x>>> y |
Poznámka : Minimálne a maximálne celé čísla, ktoré je možné reprezentovať prostredníctvom 32-bitového čísla so znamienkom, sú -2147483648 až 2147483647.
JavaScript bitový AND
Bitové AND &
vráti 1, ak sú zodpovedajúce bity oboch operandov 1, inak vráti 0 .
Operand 1 | Operand 2 | A prevádzka |
---|---|---|
0 | 0 | 0 & 0 je 0 |
0 | 1 | 0 & 1 je 0 |
1 | 0 | 1 & 0 je 0 |
1 | 1 | 1 & 1 je 1 |
Pozrime sa na bitovú operáciu AND dvoch celých čísel 12 a 25 .
V binárnom formáte 12 = 01100 25 = 11001 // bitový AND Prevádzka 12 a 25 00001100 a 00011001 --------- 00001000 = 8 (v desatinnej čiarke)
Poznámka : Konverzia 12 na 32-bitovú binárnu hodnotu nám dáva 00000000000000000000000000001100
a 25 dáva 00000000000000000000000000011001
. Predchádzajúce nuly sme však kvôli jednoduchosti odstránili.
Príklad 1: Bitový operátor AND
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
Vo vyššie uvedenom programe
- Binárna hodnota 12 je
00000000000000000000000000001100
- Binárna hodnota 25 je
00000000000000000000000000011001
. - Keď sa vykoná bitová operácia AND , výsledkom bude binárny výsledok,
00000000000000000000000000001000
ktorý sa prevedie na desatinnú hodnotu 8.
JavaScript bitový ALEBO
Bitové ALEBO |
vráti 1, ak je jeden zo zodpovedajúcich bitov jedného operandu 1, iné vráti 0 .
Operand 1 | Operand 2 | ALEBO Prevádzka |
---|---|---|
0 | 0 | 0 | 0 je 0 |
0 | 1 | 0 | 1 je 1 |
1 | 0 | 1 | 0 je 1 |
1 | 1 | 1 | 1 je 1 |
Pozrime sa na bitovú operáciu ALEBO dvoch celých čísel 12 a 25 .
V binárnom formáte 12 = 01100 25 = 11001 // bitový ALEBO Prevádzka 12 a 25 00001100 | 00011001 -------- 00011101 = 29 (v desiatkovej sústave)
Príklad 2: Bitový operátor OR
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Keď sa vykoná bitová operácia OR , bude binárny výsledok ten, 00000000000000000000000000011101
ktorý sa prevedie na desatinnú hodnotu 29.
JavaScript bitový XOR
Bitový XOR ^
vráti 1, ak sú zodpovedajúce bity odlišné, a vráti 0, ak sú zodpovedajúce bity rovnaké.
Operand 1 | Operand 2 | Prevádzka XOR |
---|---|---|
0 | 0 | 0 0 je 0 |
0 | 1 | 0 1 je 1 |
1 | 0 | 1 0 je 1 |
1 | 1 | 1 1 je 0 |
V binárnom formáte 12 = 01100 25 = 11001 // Bitová prevádzka XOR 12 a 25 00001100 00011001 -------- 00010101 = 21 (v desatinnej čiarke)
Príklad 3: Bitový operátor XOR
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Keď sa vykoná bitová operácia XOR , bude binárny výsledok, 00000000000000000000000000010101
ktorý sa prevedie na desatinnú hodnotu 21.
JavaScript bitový NIE
Bitová operácia NOT ~
invertuje bit ( 0 sa stáva 1 , 1 sa stáva 0 ).
V binárnom formáte 12 = 000000000000000000000000001100 // Bitové nie je prevádzka 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13 (v desiatkovej sústave)
Pri prevode 11111111111111111111111111110011
na desatinné miesto by bola hodnota 4294967283. Ale pri použití bitového operátora sa hodnota počíta vo formáte doplnku podpísaného 2, s výnimkou posunu doprava s nulovým vyplnením.
Doplnok 2 sa počíta tak, že sa invertujú bity (doplnok 1) a potom sa pridá 1 . Napríklad,
13 in binary: 00000000000000000000000000001101 1's complement of 13: 11111111111111111111111111110010 2's complement of 13: 11111111111111111111111111110010 +1 --------------------------------- 11111111111111111111111111110011
Notice the 2's complement of 13 (i.e. -13) is 11111111111111111111111111110011
. This value is equivalent to the bitwise NOT of 12.
Example 4: Bitwise NOT Operator
// bitwise NOT operator example let b = 12; result = ~b; console.log(result); // -13
When bitwise NOT operation is performed, the binary result will be 11111111111111111111111111110011
which converts into the decimal value -13.
Note: Bitwise NOT of a number x gives -(x + 1). Notice above ~2
gives -3.
JavaScript Left shift
V operátore ľavého posunu <<
určuje ľavý operand číslo a pravý operand číslo, ktoré sa má posunúť doľava. Vpravo sú pridané nulové bity a prebytočné bity vľavo sú zahodené.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples.png.webp)
Napríklad,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
Pravý posun šíriaci znak JavaScript
V operátore posunu doprava >>
prvý operand špecifikuje číslo a druhý operand číslo, ktoré sa má posunúť doprava. Prebytočné bity sprava sú zahodené. Kópie bitu úplne vľavo sú posunuté dovnútra, odtiaľ sa šíri názov znak.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_2.png.webp)
Napríklad,
let a = 8; let b = 1; // 11111111111111111111111111111101 let c = -3; result = a>> b; result1 = c>> b; // 4 (00000000000000000000000000000100) console.log(result); // -1 (11111111111111111111111111111111) console.log(result1);
JavaScript Zero-fill right shift
Posunutie nulového plnenia doprava >>>
posúva operand doprava vyplnením nulových bitov doľava. Prebytočné bity sprava sú zahodené.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_3.png.webp)
Napríklad,
let a = 8; let b = 1; let c = -3; result = a>>> b; result1 = c>>> b; // 4 (00000000000000000000000000000100) console.log(result); // 1073741823 (00111111111111111111111111111111) console.log(result);