U ovom ćete tutorijalu uz primjere naučiti o bitovnim operatorima JavaScript i njegovim vrstama.
JavaScript bitni operateri
Operatori u bitovima tretiraju njegove operande kao skup 32-bitnih binarnih znamenki (nula i jedinica) i izvode radnje. Međutim, rezultat je prikazan kao decimalna vrijednost.
Operateri | Ime | Primjer |
---|---|---|
& | Bitno I | x & y |
| | Bitno ILI | x | y |
^ | Bitno XOR | x y |
~ | Bitno NE | ~x |
<< | Lijevi pomak | x << y |
>> | Desni pomak koji se širi znakom | x>> y |
>>> | Pomak udesno u nuli | x>>> y |
Napomena : Minimalni i maksimalni cijeli brojevi koji se mogu predstaviti putem 32-bitnog potpisanog broja su od -2147483648 do 2147483647.
JavaScript u bitovima I
Bitno I &
vraća 1 ako su odgovarajući bitovi oba operanda 1, inače vraća 0 .
Operand 1 | Operand 2 | I Operacija |
---|---|---|
0 | 0 | 0 & 0 je 0 |
0 | 1 | 0 & 1 je 0 |
1 | 0 | 1 & 0 je 0 |
1 | 1 | 1 & 1 je 1 |
Pogledajmo bitni I rad dviju cijelih 12 i 25 .
U binarnom obliku, 12 = 01100 25 = 11001 // Bitno i rad 12 i 25 00001100 & 00011001 --------- 00001000 = 8 (u decimalu)
Napomena : Pretvaranje 12 u 32-bitne binarne datoteke daje nam, 00000000000000000000000000001100
a 25 daje 00000000000000000000000000011001
. Međutim, radi jednostavnosti uklonili smo prethodne nule.
Primjer 1: Bitni I operator
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
U gornjem programu,
- Binarna vrijednost 12 je
00000000000000000000000000001100
- Binarna vrijednost 25 je
00000000000000000000000000011001
. - Kada se izvede bitna operacija AND , binarni rezultat bit će
00000000000000000000000000001000
koji se pretvara u decimalnu vrijednost 8.
JavaScript u bitovima ILI
Bitno ILI |
vraća 1 ako je jedan od odgovarajućih bitova jednog operanda 1, vraća 0 .
Operand 1 | Operand 2 | ILI 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 |
Pogledajmo bitovnu ILI operaciju dviju cijelih brojeva 12 i 25 .
U binarnom obliku, 12 = 01100 25 = 11001 // Bitno ILI rad 12 i 25 00001100 | 00011001 -------- 00011101 = 29 (u decimalu)
Primjer 2: Bitni ILI operator
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Kada se izvede bitna ILI operacija, binarni rezultat bit će 00000000000000000000000000011101
koji se pretvara u decimalnu vrijednost 29.
JavaScript bitni XOR
Bitno XOR ^
vraća 1 ako su odgovarajući bitovi različiti i vraća 0 ako su odgovarajući bitovi isti.
Operand 1 | Operand 2 | XOR operacija |
---|---|---|
0 | 0 | 0 0 je 0 |
0 | 1 | 0 1 je 1 |
1 | 0 | 1 0 je 1 |
1 | 1 | 1 1 je 0 |
U binarnom obliku, 12 = 01100 25 = 11001 // Bitovno XOR rad 12 i 25 00001100 00011001 -------- 00010101 = 21 (u decimalu)
Primjer 3: Bitni XOR operator
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Kada se izvede bitna XOR operacija, binarni rezultat bit će 00000000000000000000000000010101
koji se pretvara u decimalnu vrijednost 21.
JavaScript u bitovima NE
Bitno NE ~
pretvara bit ( 0 postaje 1 , 1 postaje 0 ).
U binarnom obliku, 12 = 00000000000000000000000000001100 // Bitwise Not Operation of 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13 (u decimalu)
Tijekom pretvaranja 11111111111111111111111111110011
u decimalni, vrijednost bi bila 4294967283. Ali kada se koristi bitni operator, vrijednost se izračunava u formatu komplementa s potpisanim 2, osim za pomak udesno s nulom.
Komplement 2 izračunava se invertiranjem bitova (komplement 1) i dodavanjem 1 . Na primjer,
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
U operateru lijevog pomaka <<
, lijevi operand navodi broj, a desni operand broj koji se pomiče ulijevo. Nula bitova dodaju se udesno, a višak bitova ulijevo odbacuje.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples.png.webp)
Na primjer,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
JavaScript smjena koja se širi udesno
U operateru desnog pomaka >>
, prvi operand navodi broj, a drugi operand broj koji treba pomaknuti udesno. Višak bitova s desne strane se odbacuje. Kopije krajnjeg lijevog bita pomaknute su s lijeve strane, pa otuda i naziv koji se širi.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_2.png.webp)
Na primjer,
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 pomak
Zero ubacivanje pravo smjene >>>
smjene operanda na desnoj strani ispunjavanjem nula bita na lijevo. Višak bitova s desne strane se odbacuje.
![](https://cdn.wiki-base.com/6546206/javascript_bitwise_operators_with_examples_3.png.webp)
Na primjer,
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);