В този урок ще научите за битовите оператори на 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
В оператора за лява смяна <<
левият операнд указва номера, а десният операнд посочва номера, който трябва да бъде изместен наляво. Нулеви битове се добавят отдясно и излишните битове отляво се изхвърлят.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples.png.webp)
Например,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
JavaScript знаци, разпространяващи се надясно
В оператора за дясна смяна >>
първият операнд указва номера, а вторият операнд указва броя, който трябва да бъде изместен вдясно. Излишните битове отдясно се изхвърлят. Копията на най-левия бит се преместват отляво, откъдето произлиза и името, разпространяващо се.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_2.png.webp)
Например,
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 Нулево запълване надясно
Нулевото запълване отдясно >>>
измества операнда надясно, като запълва нулевите битове вляво. Излишните битове отдясно се изхвърлят.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_3.png.webp)
Например,
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);