V tej vadnici boste s pomočjo primerov spoznali bitne operatorje JavaScript in njegove vrste.
JavaScript bitni operaterji
Bit-operaterji njegove operande obravnavajo kot nabor 32-bitnih binarnih številk (ničle in enote) in izvajajo dejanja. Rezultat pa je prikazan kot decimalna vrednost.
Operaterji | Ime | Primer |
---|---|---|
& | Bitovno AND | x & y |
| | Bitovno ALI | x | y |
^ | Bitno XOR | x y |
~ | Bitno NE | ~x |
<< | Levi shift | x << y |
>> | Desni premik, ki širi znak | x>> y |
>>> | Ničelno polnjenje v desno | x>>> y |
Opomba : Najmanjša in največja cela števila, ki jih je mogoče predstaviti prek 32-bitne podpisane številke, so od -2147483648 do 2147483647.
JavaScript v bitnih smereh IN
Bitno AND &
vrne 1, če sta ustrezna bita obeh operandov 1, sicer vrne 0 .
Operand 1 | Operand 2 | IN delovanje |
---|---|---|
0 | 0 | 0 & 0 je 0 |
0 | 1. | 0 & 1 je 0 |
1. | 0 | 1 & 0 je 0 |
1. | 1. | 1 & 1 je 1 |
Oglejmo si bitno AND delovanje dveh celih števil 12 in 25 .
V binarni obliki je 12 = 01100 25 = 11001 // Bit-bit in delovanje 12 in 25 00001100 & 00011001 --------- 00001000 = 8 (v decimalni številki)
Opomba : Pretvorba 12 v 32-bitno binarno datoteko nam daje 00000000000000000000000000001100
in 25 daje 00000000000000000000000000011001
. Vendar smo zaradi enostavnosti odstranili prejšnje ničle.
Primer 1: Bitni in operater
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
V zgornjem programu
- Binarna vrednost 12 je
00000000000000000000000000001100
- Binarna vrednost 25 je
00000000000000000000000000011001
. - Ko se izvede bitna operacija AND , bo binarni rezultat tisti,
00000000000000000000000000001000
ki se pretvori v decimalno vrednost 8.
JavaScript v bitnih nastavitvah ALI
Bitno OR |
vrne 1, če je kateri koli od ustreznih bitov enega operanda 1, sicer vrne 0 .
Operand 1 | Operand 2 | ALI Operacija |
---|---|---|
0 | 0 | 0 | 0 je 0 |
0 | 1. | 0 | 1 je 1 |
1. | 0 | 1 | 0 je 1 |
1. | 1. | 1 | 1 je 1 |
Oglejmo si bitno ALI operacijo dveh celih števil 12 in 25 .
V binarni obliki je 12 = 01100 25 = 11001 // Bitno ALI Operacija 12 in 25 00001100 | 00011001 -------- 00011101 = 29 (v decimalni številki)
Primer 2: Bitni ALI operater
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Ko se izvede bitna operacija ALI , bo binarni rezultat tisti, 00000000000000000000000000011101
ki se pretvori v decimalno vrednost 29.
JavaScript v bitnih razmerah XOR
Bitno XOR ^
vrne 1, če so ustrezni biti drugačni, in vrne 0, če so ustrezni biti enaki.
Operand 1 | Operand 2 | Delovanje 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 binarni obliki je 12 = 01100 25 = 11001 // Bitorezno XOR Operacija 12 in 25 00001100 00011001 -------- 00010101 = 21 (v decimalni številki)
3. primer: Bitni operater XOR
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Ko se izvede bitna operacija XOR , bo binarni rezultat tisti, 00000000000000000000000000010101
ki se pretvori v decimalno vrednost 21.
JavaScript Bit-bit NE
Bit bitno NE pretvori ~
bit ( 0 postane 1 , 1 postane 0 ).
V binarni obliki je 12 = 00000000000000000000000000001100 // Bit-bit Ne deluje 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13 (v decimalni številki)
Med pretvorbo 11111111111111111111111111110011
v decimalno vrednost bi bila 4294967283. Toda pri uporabi bitnega operatorja se vrednost izračuna v formatu dopolnila podpisanega 2, razen za premik v desno.
Komplement 2 izračunamo tako, da obrnemo bite (komplement 1) in nato dodamo 1 . Na primer
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 operaterju levega premika <<
levi operand določa številko, desni operand pa številko, ki jo je treba premakniti levo. Na desno se dodajo nič bitov, odvečni deli leve pa se zavržejo.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples.png.webp)
Na primer
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
Desni premik, ki širi znake JavaScript
V operaterju desnega premika >>
prvi operand določi številko, drugi operand pa številko, ki jo je treba premakniti v desno. Presežni deli z desne se zavržejo. Kopije skrajnega levega bita se premaknejo z leve, zato se ime širi.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_2.png.webp)
Na primer
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 desni premik
Premik >>>
v desno z ničelnim polnjenjem premakne operand v desno tako, da napolni nič bitov v levo. Presežni deli z desne se zavržejo.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_3.png.webp)
Na primer
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);