JavaScript Bitwise-operators (met voorbeelden)

In deze zelfstudie leert u met behulp van voorbeelden over JavaScript-bitsgewijze operatoren en de typen ervan.

JavaScript Bitwise-operators

Bitwise-operators behandelen hun operanden als een set van 32-bits binaire cijfers (nullen en enen) en voeren acties uit. Het resultaat wordt echter weergegeven als een decimale waarde.

Operatoren Naam Voorbeeld
& Bitwise EN x & y
| Bitsgewijs OF x | y
^ Bitsgewijze XOR x y
~ Bitsgewijs NIET ~x
<< Linker shift x << y
>> Sign-propagating right shift x>> y
>>> Zero-fill naar rechts verschuiven x>>> y

Opmerking : de minimale en maximale gehele getallen die kunnen worden weergegeven via een 32-bits getal met teken zijn -2147483648 tot 2147483647.

JavaScript Bitwise AND

Bitgewijs AND &retourneert 1 als de corresponderende bits van beide operanden 1 zijn, anders retourneert het 0 .

Operand 1 Operand 2 EN werking
0 0 0 & 0is 0
0 1 0 & 1is 0
1 0 1 & 0is 0
1 1 1 & 1is 1

Laten we eens kijken naar de bitsgewijze EN-bewerking van twee gehele getallen 12 en 25 .

 In binair, 12 = 01100 25 = 11001 // Bitgewijs EN Werking van 12 en 25 00001100 & 00011001 --------- 00001000 = 8 (In decimaal)

Opmerking : het converteren van 12 naar 32-bits binair geeft ons 00000000000000000000000000001100en 25 geeft 00000000000000000000000000011001. Voor de eenvoud hebben we de voorgaande nullen echter verwijderd.

Voorbeeld 1: Bitwise AND Operator

 // bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8 

In het bovenstaande programma,

  • De binaire waarde van 12 is00000000000000000000000000001100
  • De binaire waarde van 25 is 00000000000000000000000000011001.
  • Wanneer bitsgewijze EN- bewerking wordt uitgevoerd, wordt het binaire resultaat 00000000000000000000000000001000omgezet in de decimale waarde 8.

JavaScript Bitwise OF

Bitsgewijs OR |retourneert 1 als een van de corresponderende bits van een operand 1 is, anders retourneert 0 .

Operand 1 Operand 2 OF Operatie
0 0 0 | 0is 0
0 1 0 | 1is 1
1 0 1 | 0is 1
1 1 1 | 1is 1

Laten we eens kijken naar de bitsgewijze OR-bewerking van twee gehele getallen 12 en 25 .

In binair, 12 = 01100 25 = 11001 // Bitgewijs OF Werking van 12 en 25 00001100 | 00011001 -------- 00011101 = 29 (in decimaal)

Voorbeeld 2: Bitwise OF Operator

 // bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29

Wanneer een bitsgewijze OR- bewerking wordt uitgevoerd, wordt het binaire resultaat 00000000000000000000000000011101omgezet in de decimale waarde 29.

JavaScript Bitwise XOR

Bitwise XOR ^retourneert 1 als de corresponderende bits verschillend zijn en retourneert 0 als de corresponderende bits hetzelfde zijn.

Operand 1 Operand 2 XOR-werking
0 0 0 0is 0
0 1 0 1is 1
1 0 1 0is 1
1 1 1 1is 0
 In binair, 12 = 01100 25 = 11001 // Bitwise XOR Werking van 12 en 25 00001100 00011001 -------- 00010101 = 21 (In decimaal)

Voorbeeld 3: Bitwise XOR-operator

 // bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21

Wanneer een bitsgewijze XOR- bewerking wordt uitgevoerd, wordt het binaire resultaat 00000000000000000000000000010101omgezet in de decimale waarde 21.

JavaScript Bitwise NIET

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

In de linker shift-operator <<specificeert de linker operand het getal en de rechter operand het getal dat naar links moet worden verschoven. Nul bits worden rechts toegevoegd en overtollige bits van links worden verwijderd.

Een beetje naar links verschuiven in JavaScript

Bijvoorbeeld,

 let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);

JavaScript-teken-propagerende verschuiving naar rechts

In de rechterschuivingsoperator >>specificeert de eerste operand het nummer en specificeert de tweede operand het nummer dat naar rechts moet worden verschoven. Overtollige bits van rechts worden weggegooid. De kopieën van het meest linkse bit zijn van links naar binnen verschoven, vandaar het voorteken van de naam.

Een beetje naar rechts verschuiven met tekenpropagatie, vul JavaScript in

Bijvoorbeeld,

 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 naar rechts verschuiven

Zero-fill naar rechts >>>verschuift de operand naar rechts door de nul bits naar links te vullen. Overtollige bits van rechts worden weggegooid.

Een beetje naar rechts verschuiven met nul vulling in JavaScript

Bijvoorbeeld,

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

Interessante artikelen...