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 & 0 je 0 |
0 | 1 | 0 & 1 je 0 |
1 | 0 | 1 & 0 je 0 |
1 | 1 | 1 & 1 je 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 00000000000000000000000000001100
a 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 je
00000000000000000000000000001100
- Binární hodnota 25 je
00000000000000000000000000011001
. - Když je provedena bitová operace AND , bude binární výsledek,
00000000000000000000000000001000
který 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 | 0 je 0 |
0 | 1 | 0 | 1 je 1 |
1 | 0 | 1 | 0 je 1 |
1 | 1 | 1 | 1 je 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, 00000000000000000000000000011101
který 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 0 je 0 |
0 | 1 | 0 1 je 1 |
1 | 0 | 1 0 je 1 |
1 | 1 | 1 1 je 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, 00000000000000000000000000010101
který 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 11111111111111111111111111110011
na 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.

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.

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.

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