Operatory bitowe JavaScript (z przykładami)

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 & 0wynosi 0
0 1 0 & 1wynosi 0
1 0 1 & 0wynosi 0
1 1 1 & 1jest 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, 00000000000000000000000000001100a 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 to00000000000000000000000000001100
  • Wartość binarna 25 to 00000000000000000000000000011001.
  • Kiedy wykonywana jest operacja bitowa AND , wynik binarny będzie 00000000000000000000000000001000konwertowany 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 | 0wynosi 0
0 1 0 | 1jest 1
1 0 1 | 0jest 1
1 1 1 | 1jest 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 00000000000000000000000000011101konwertowany 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 0wynosi 0
0 1 0 1jest 1
1 0 1 0jest 1
1 1 1 1wynosi 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 00000000000000000000000000010101konwertowany 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 11111111111111111111111111110011na 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.

Jedno przesunięcie w lewo w JavaScript

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.

Jedno przesunięcie w prawo z propagacją znaku wypełnij JavaScript

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.

Jedno bitowe przesunięcie w prawo z zerowym wypełnieniem w JavaScript

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

Interesujące artykuły...