Bitové operátory JavaScriptu (s príkladmi)

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 & 0je 0
0 1 0 & 1je 0
1 0 1 & 0je 0
1 1 1 & 1je 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 00000000000000000000000000001100a 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 je00000000000000000000000000001100
  • Binárna hodnota 25 je 00000000000000000000000000011001.
  • Keď sa vykoná bitová operácia AND , výsledkom bude binárny výsledok, 00000000000000000000000000001000ktorý 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 | 0je 0
0 1 0 | 1je 1
1 0 1 | 0je 1
1 1 1 | 1je 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, 00000000000000000000000000011101ktorý 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 0je 0
0 1 0 1je 1
1 0 1 0je 1
1 1 1 1je 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, 00000000000000000000000000010101ktorý 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 11111111111111111111111111110011na 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é.

Jeden bit posun vľavo v JavaScripte

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.

Jeden bitový posun doprava so znamienkom šírite vyplňte JavaScript

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é.

Jeden bitový posun doprava s nulovým vyplnením v JavaScripte

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);

Zaujímavé články...