W tym samouczku dowiesz się o operatorach bitowych JavaScript i ich typach na przykładach.
Operatory bitowe JavaScript
Operatory bitowe traktują jego operandy jako zbiór 32-bitowych cyfr binarnych (zer i jedynek) i wykonują akcje. Jednak wynik jest wyświetlany jako wartość dziesiętna.
Operatorzy | Nazwa | Przykład |
---|---|---|
& | Bitowe i | x & y |
| | Bitowe OR | x | y |
^ | Bitowe XOR | x y |
~ | Bitowe NIE | ~x |
<< | Przesunięcie w lewo | x << y |
>> | Przesunięcie w prawo propagujące znak | x>> y |
>>> | Przesunięcie w prawo z wypełnieniem zerowym | x>>> y |
Uwaga : Minimalna i maksymalna liczba całkowita, którą można przedstawić za pomocą 32-bitowej liczby ze znakiem, to od -2147483648 do 2147483647.
JavaScript Bitowe AND
Bitowe AND &
zwraca 1, jeśli odpowiednie bity obu operandów wynoszą 1 , w przeciwnym razie zwraca 0 .
Argument 1 | Operand 2 | Operacja AND |
---|---|---|
0 | 0 | 0 & 0 wynosi 0 |
0 | 1 | 0 & 1 wynosi 0 |
1 | 0 | 1 & 0 wynosi 0 |
1 | 1 | 1 & 1 jest 1 |
Przyjrzyjmy się operacji bitowej AND na dwóch liczbach całkowitych 12 i 25 .
Binarnie, 12 = 01100 25 = 11001 // Bitowe AND Operacja 12 i 25 00001100 i 00011001 --------- 00001000 = 8 (dziesiętnie)
Uwaga : Przekształcenie 12 na 32-bitowe binarne daje nam, 00000000000000000000000000001100
a 25 daje 00000000000000000000000000011001
. Jednak dla uproszczenia usunęliśmy poprzednie zera.
Przykład 1: operator bitowy AND
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
W powyższym programie
- Wartość binarna 12 to
00000000000000000000000000001100
- Wartość binarna 25 to
00000000000000000000000000011001
. - Kiedy wykonywana jest operacja bitowa AND , wynik binarny będzie
00000000000000000000000000001000
konwertowany na wartość dziesiętną 8.
JavaScript Bitwise OR
Bitowe OR |
zwraca 1, jeśli jeden z odpowiednich bitów jednego operandu ma wartość 1 , w przeciwnym razie zwraca 0 .
Argument 1 | Operand 2 | LUB Operacja |
---|---|---|
0 | 0 | 0 | 0 wynosi 0 |
0 | 1 | 0 | 1 jest 1 |
1 | 0 | 1 | 0 jest 1 |
1 | 1 | 1 | 1 jest 1 |
Przyjrzyjmy się operacji bitowej OR na dwóch liczbach całkowitych 12 i 25 .
Binarnie, 12 = 01100 25 = 11001 // Bitowe LUB Operacja 12 i 25 00001100 | 00011001 -------- 00011101 = 29 (dziesiętnie)
Przykład 2: operator bitowy OR
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Kiedy wykonywana jest operacja bitowa OR , wynik binarny będzie 00000000000000000000000000011101
konwertowany na wartość dziesiętną 29.
JavaScript Bitwise XOR
Bitowe XOR ^
zwraca 1, jeśli odpowiednie bity są różne, i zwraca 0, jeśli odpowiadające im bity są takie same.
Argument 1 | Operand 2 | Operacja XOR |
---|---|---|
0 | 0 | 0 0 wynosi 0 |
0 | 1 | 0 1 jest 1 |
1 | 0 | 1 0 jest 1 |
1 | 1 | 1 1 wynosi 0 |
Binarnie, 12 = 01100 25 = 11001 // Bitowa operacja XOR 12 i 25 00001100 00011001 -------- 00010101 = 21 (dziesiętnie)
Przykład 3: Bitowy operator XOR
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Kiedy wykonywana jest bitowa operacja XOR , wynik binarny będzie 00000000000000000000000000010101
konwertowany na wartość dziesiętną 21.
JavaScript Bitwise NIE
Bitowe NIE ~
odwraca bitu ( 0 staje się 1 , 1 staje się 0 ).
Binarnie, 12 = 00000000000000000000000000001100 // Bitwise Not Operation z 12 ~ 00000000000000000000000000001100 --------------------------------- 111111111111111111111111110011 = -13 (dziesiętnie)
Podczas konwersji 11111111111111111111111111110011
na dziesiętną wartość wyniesie 4294967283. Jednak w przypadku korzystania z operatora bitowego wartość jest obliczana w formacie dopełnienia ze znakiem 2, z wyjątkiem przesunięcia w prawo z wypełnieniem zerowym.
Uzupełnienie do 2 jest obliczane przez odwrócenie bitów (dopełnienie do 1), a następnie dodanie 1 . Na przykład,
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
W operatorze przesunięcia <<
w lewo lewy operand określa liczbę, a prawy operand określa liczbę do przesunięcia w lewo. Zerowe bity są dodawane po prawej stronie, a nadmiarowe bity z lewej strony są odrzucane.

Na przykład,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
Przesunięcie w prawo propagujące znak JavaScript
W prawym operatorze przesunięcia >>
pierwszy operand określa liczbę, a drugi argument określa liczbę, która ma zostać przesunięta w prawo. Nadmiar bitów z prawej strony jest odrzucany. Kopie bitu znajdującego się najbardziej po lewej stronie są przesunięte z lewej strony, stąd nazwa propaguje znak.

Na przykład,
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 Przesunięcie w prawo z wypełnieniem zerami
Zero-fill PRAWY SHIFT >>>
zmiany argumentu w prawo o wypełnienie bitów zerowych po lewej stronie. Nadmiar bitów z prawej strony jest odrzucany.

Na przykład,
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);