JavaScript Bitoperatorer
- Föregående sida JS-dekonstruktion
- Nästa sida JS-reguljära uttryck
JavaScript Bitoperatorer
Operator | Namn | Beskrivning |
---|---|---|
& | AND | Om båda bitarna är 1 sätter varje bit till 1 |
| | OR | Om en av två bitar är 1 sätter varje bit till 1 |
^ | XOR | Om två bitar endast har en 1 sätter varje bit till 1 |
~ | NOT | Invertera alla bitar |
<< | Nollfyllnadsvänsterflyttning | Genom att trycka in noll från höger för att flytta till vänster och låta den vänstra positionen falla av. |
>> | Signifikant högerflyttning | Genom att trycka in en kopia av den vänstra positionen från vänster för att flytta till höger och låta den högra positionen falla av. |
>>> | Nollfyllnadshögerflyttning | Genom att trycka in noll från vänster för att flytta till höger och låta den högra positionen falla av. |
Exempel
Operation | Resultat | Ekvivalent | Resultat |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript använder 32 bitars bitoperationer
JavaScript lagrar nummer som 64 bitars flyttal, men alla bitoperationer utförs med 32 bitars binära tal.
Innan bitoperationer utförs konverterar JavaScript nummer till 32 bitar teckenbärande heltal.
Efter att ha utfört bitoperationer konverteras resultatet tillbaka till 64 bitars JavaScript-tal.
Ovanstående exempel använder 4 bitar osignerade binära tal. Så ~ 5 returnerar 10.
Eftersom JavaScript använder 32 bitar teckenbärande heltal, returnerar JavaScript -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Teckenbärande heltal använder den vänstra biten som minustecken.
Bitoperator AND
När bitar används i bitoperator AND, returneras 1 om bitarna är alla 1.
Enhetsexempel:
Operation | Resultat |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Fyra bitars exempel:
Operation | Resultat |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bitoperator OR
När bitar används i bitoperator OR, returneras 1 om någon av bitarna är 1:
Enhetsexempel
Operation | Resultat |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Fyra bitars operation:
Operation | Resultat |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitoperator XOR
När bitar används i bitoperator XOR, returneras 1 om bitarna är olika:
Enhetsexempel:
Operation | Resultat |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Fyra bitars exempel:
Operation | Resultat |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript bitoperator AND (&)
Om bitarna är alla 1, returnerar bitoperator AND 1:
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Exempel
var x = 5 & 1;
JavaScript bitoperator OR (|)
Om en av bitarna är 1, returnerar bitoperator OR 1:
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Exempel
var x = 5 | 1;
JavaScript bitoperator XOR (^)
Om bitarna är olika, returnerar XOR 1:
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Exempel
var x = 5 ^ 1;
JavaScript bitoperator NOT (~)
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Exempel
var x = ~5;
JavaScript (nollfyllning) bitoperator vänsterflyttning (<<)
Detta är en vänsterflyttning med nollfyllning. En eller flera nollor skjuts in från höger, och den vänstra siffran tas bort:
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Exempel
var x = 5 << 1;
JavaScript (teckenbärande) bitoperator högerflyttning (>>)
Detta är en högerflyttning som bevarar tecknet. Den vänstra siffran skjuts in från vänster, och den högra siffran flyttas ut:
Tolvkommalöst | Binär |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Exempel
var x = -5 >> 1;
JavaScript (nollfyllning) högerflyttning (>>>)
Detta är en högerflyttning med nollfyllning. En eller flera nollor skjuts in från vänster, och den högra siffran flyttas ut:
Tolvkommalöst | Binär |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Exempel
var x = 5 >>> 1;
32-bitars teckenbärande heltal (binär tal)
Det är enkelt att förstå en 32-bitars heltal med endast ett tecken:
Binär representation | Decimalvärde |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Mer satta bitar avslöjar mönstret i binära systemet:
Binär representation | Decimalvärde |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Negativa tal är positivt talens binära komplement plus 1:
Binär representation | Decimalvärde |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Konvertera decimal till binär
Exempel
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Konvertera binär till decimal
Exempel
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Föregående sida JS-dekonstruktion
- Nästa sida JS-reguljära uttryck