Bitové operátory JavaScriptu (s příklady)

V tomto kurzu se na příkladech dozvíte o bitových operátorech JavaScriptu a jeho typech.

Bitové operátory JavaScriptu

Bitové operátory považují své operandy za sadu 32bitových binárních číslic (nuly a jedničky) a provádějí akce. Výsledek se však zobrazí jako desetinná hodnota.

Operátoři název Příklad
& Bitové AND x & y
| Bitové NEBO x | y
^ Bitový XOR x y
~ Bitové NENÍ ~x
<< Levý Shift x << y
>> Znak šířící pravý posun x>> y
>>> Posun doprava bez vynulování x>>> y

Poznámka : Minimální a maximální celá čísla, která lze reprezentovat prostřednictvím 32bitového podepsaného čísla, jsou -2147483648 až 2147483647.

JavaScript bitový AND

Bitové AND &vrátí 1, pokud jsou odpovídající bity obou operandů 1, jinak vrátí 0 .

Operand 1 Operand 2 A provoz
0 0 0 & 0je 0
0 1 0 & 1je 0
1 0 1 & 0je 0
1 1 1 & 1je 1

Pojďme se podívat na bitovou operaci AND dvou celých čísel 12 a 25 .

 V binárním formátu 12 = 01100 25 = 11001 // Bitový AND Provoz 12 a 25 00001100 a 00011001 --------- 00001000 = 8 (v desítkové soustavě)

Poznámka : Převod 12 na 32bitovou binární hodnotu dává nám 00000000000000000000000000001100a 25 dává 00000000000000000000000000011001. Dříve jsme ale pro jednoduchost odstranili předchozí nuly.

Příklad 1: Bitový operátor AND

 // bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8 

Ve výše uvedeném programu

  • Binární hodnota 12 je00000000000000000000000000001100
  • Binární hodnota 25 je 00000000000000000000000000011001.
  • Když je provedena bitová operace AND , bude binární výsledek, 00000000000000000000000000001000který se převede na desítkovou hodnotu 8.

Bitový JavaScript JavaScript NEBO

Bitový operátor OR |vrátí 1, pokud je jeden z odpovídajících bitů jednoho operandu 1, jinak vrátí 0 .

Operand 1 Operand 2 NEBO provoz
0 0 0 | 0je 0
0 1 0 | 1je 1
1 0 1 | 0je 1
1 1 1 | 1je 1

Pojďme se podívat na bitovou operaci OR dvou celých čísel 12 a 25 .

V binárním formátu 12 = 01100 25 = 11001 // Bitové operace NEBO operace 12 a 25 00001100 | 00011001 -------- 00011101 = 29 (v desítkové soustavě)

Příklad 2: Bitový operátor OR

 // bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29

Když je provedena bitová operace OR , bude binární výsledek, 00000000000000000000000000011101který se převede na desítkovou hodnotu 29.

Bitový JavaScript XOR

Bitový XOR ^vrátí 1, pokud jsou odpovídající bity odlišné, a vrátí 0, pokud jsou odpovídající bity stejné.

Operand 1 Operand 2 Provoz XOR
0 0 0 0je 0
0 1 0 1je 1
1 0 1 0je 1
1 1 1 1je 0
 V binárním formátu 12 = 01100 25 = 11001 // Bitový provoz XOR 12 a 25 00001100 00011001 -------- 00010101 = 21 (v desítkové soustavě)

Příklad 3: Bitový operátor XOR

 // bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21

Když se provede bitová operace XOR , bude binární výsledek, 00000000000000000000000000010101který se převede na desítkovou hodnotu 21.

Bitový JavaScript NENÍ

Bitový NENÍ ~invertuje bit ( 0 se stane 1 , 1 se stane 0 ).

 V binárním formátu 12 = 00000000000000000000000000001100 // bitové není operace 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13 (v desítkové soustavě)

Při převodu 11111111111111111111111111110011na desítkové by byla hodnota 4294967283. Ale při použití bitového operátoru je hodnota počítána ve formátu doplňku podepsaného 2, s výjimkou posunu doprava s nulovým vyplněním.

Doplněk 2 se vypočítá převrácením bitů (doplněk 1) a přidáním 1 . Napří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 levém operátoru posunu <<určuje levý operand číslo a pravý operand určuje číslo, které má být posunuto doleva. Nulové bity jsou přidány doprava a přebytečné bity zleva jsou zahozeny.

Jeden bitový posun vlevo v JavaScriptu

Například,

 let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);

JavaScriptový znak šířící pravý posun

V operátoru posunutí doprava >>určuje první operand číslo a druhý operand určuje číslo, které má být posunuto doprava. Přebytečné bity zprava jsou zahozeny. Kopie bitu nejvíce vlevo jsou posunuty zleva, a proto se šíří název.

Jeden bitový posun doprava se znaménkem šířící vyplňte JavaScript

Napří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

Posunutí nulového plnění doprava >>>posune operand doprava vyplněním nulových bitů doleva. Přebytečné bity zprava jsou zahozeny.

Jeden bitový posun doprava s nulovým vyplněním v JavaScriptu

Napří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);

Zajímavé články...