У цьому посібнику ви дізнаєтеся про побітові оператори JavaScript та його типи за допомогою прикладів.
Побітові оператори JavaScript
Побітові оператори розглядають його операнди як набір 32-розрядних двійкових цифр (нулів та одиниць) і виконують дії. Однак результат відображається як десяткове значення.
Оператори | Ім'я | Приклад |
---|---|---|
& | Побітове І | x & y |
| | Побітове АБО | x | y |
^ | Побітовий XOR | x y |
~ | Побітове НЕ | ~x |
<< | Ліва зміна | x << y |
>> | Зміщення, що поширюється вправо | x>> y |
>>> | Нульове заповнення вправо | x>>> y |
Примітка : Мінімальне та максимальне цілі числа, які можна представити через 32-розрядне число зі знаком, складають від -2147483648 до 2147483647.
JavaScript побітовим І
Побітове І &
повертає 1, якщо відповідні біти обох операндів дорівнюють 1, інакше він повертає 0 .
Операнд 1 | Операнд 2 | І операція |
---|---|---|
0 | 0 | 0 & 0 дорівнює 0 |
0 | 1 | 0 & 1 дорівнює 0 |
1 | 0 | 1 & 0 дорівнює 0 |
1 | 1 | 1 & 1 дорівнює 1 |
Давайте подивимося на побітове операцію І двох цілих чисел 12 і 25 .
У двійковому вигляді 12 = 01100 25 = 11001 // Побітове та Операції 12 та 25 00001100 & 00011001 --------- 00001000 = 8 (у десяткових)
Примітка : Перетворення 12 в 32-бітовий двійковий файл дає нам 00000000000000000000000000001100
і 25 дає 00000000000000000000000000011001
. Однак для простоти ми видалили попередні нулі.
Приклад 1: Побітове та оператор
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
У наведеній вище програмі
- Двійкове значення 12 дорівнює
00000000000000000000000000001100
- Двійкове значення 25 дорівнює
00000000000000000000000000011001
. - Коли виконується побітова операція І , двійковий результат буде,
00000000000000000000000000001000
який перетворюється в десяткове значення 8.
JavaScript побітове АБО
Побітове АБО |
повертає 1, якщо будь-який із відповідних бітів одного операнда дорівнює 1, інакше повертає 0 .
Операнд 1 | Операнд 2 | АБО Операція |
---|---|---|
0 | 0 | 0 | 0 дорівнює 0 |
0 | 1 | 0 | 1 дорівнює 1 |
1 | 0 | 1 | 0 дорівнює 1 |
1 | 1 | 1 | 1 дорівнює 1 |
Давайте подивимося на побітову АБО операцію двох цілих чисел 12 і 25 .
У двійковому вигляді 12 = 01100 25 = 11001 // Побітове АБО Операція 12 і 25 00001100 | 00011001 -------- 00011101 = 29 (у десяткових)
Приклад 2: Побітовий АБО Оператор
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Коли виконується побітова операція АБО , двійковий результат буде таким, 00000000000000000000000000011101
який перетворюється в десяткове значення 29.
JavaScript побітовий XOR
Побітове XOR ^
повертає 1, якщо відповідні біти різні, і повертає 0, якщо відповідні біти однакові.
Операнд 1 | Операнд 2 | Операція XOR |
---|---|---|
0 | 0 | 0 0 дорівнює 0 |
0 | 1 | 0 1 дорівнює 1 |
1 | 0 | 1 0 дорівнює 1 |
1 | 1 | 1 1 дорівнює 0 |
У двійковому вигляді 12 = 01100 25 = 11001 // Побітові операції XOR 12 та 25 00001100 00011001 -------- 00010101 = 21 (у десяткових)
Приклад 3: Побітовий оператор XOR
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Коли виконується побітова операція XOR , двійковий результат буде, 00000000000000000000000000010101
який перетворюється в десяткове значення 21.
JavaScript побітово НЕ
Bitwise NOT ~
inverts the bit( 0 becomes 1, 1 becomes 0).
In binary, 12 = 00000000000000000000000000001100 // Bitwise Not Operation of 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13(In decimal)
While converting 11111111111111111111111111110011
to decimal, the value would be 4294967283. But when using bitwise operator, the value is computed in signed 2's complement format except for zero-fill right shift.
2's complement is computed by inverting the bits(1's complement) and then adding 1. For example,
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
В лівому операторі зсуву <<
лівий операнд вказує число, а правий операнд - номер, який потрібно зсунути вліво. Нульові біти додаються праворуч, а зайві біти ліворуч відкидаються.

Наприклад,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
JavaScript, що розповсюджує зсув праворуч
В операторі зсуву праворуч >>
перший операнд вказує число, а другий операнд - номер, який потрібно зрушити вправо. Надлишки біта справа відкидаються. Копії крайнього лівого біта зміщуються зліва, звідси і поширюється назва.

Наприклад,
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 Зсув нульового заповнення вправо
Зсув вправо з нульовим заповненням >>>
зміщує операнд вправо, заповнюючи нульові біти вліво. Надлишки біта справа відкидаються.

Наприклад,
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);