JavaScript bityt
- Edellinen sivu JS-structuurit
- Seuraava sivu JS-regulariteetit
JavaScript bityt
Laskin | Nimi | Kuvaus |
---|---|---|
& | AND | Jos molemmista binäärisistä luvuista on 1, aseta jokainen bitti 1. |
| | OR | Jos jommasta kummasta binäärisestä luvusta on 1, aseta jokainen bitti 1. |
^ | XOR | Jos kahdesta binäärisestä luvusta vain yksi on 1, aseta jokainen bitti 1. |
~ | NOT | Kaikkien bittien kääntäminen |
<< | Nollalla täytetty vasen suunta | Siirrettäessä vasemmalle siirrettäessä nolla oikeasta puolelta ja poistetaan vasemman laidan bitti. |
>> | Merkityllä oikea suunta | Siirrettäessä oikealle siirrettäessä vasemman laidan kopio vasemmasta puolelta ja poistetaan oikea laidan bitti. |
>>> | Nollalla täytetty oikea suunta | Siirrettäessä oikealle siirrettäessä nolla vasemmasta puolelta ja poistetaan oikea laidan bitti. |
Esimerkki
Toiminto | Tulos | On yhtä kuin | Tulos |
---|---|---|---|
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 käyttää 32-bittisiä bittioperaatiolukuja
JavaScript tallentaa numerot 64-bittisin liukulukuina, mutta kaikki bittioperaatiot suoritetaan 32-bittisin binäärilukuina.
Ennen kuin suoritetaan bittioperaatio, JavaScript muuntaa numeron 32-bittiseksi merkittäväksi kokonaisluvuksi.
Bittioperaation suorittamisen jälkeen tulos muunnetaan 64-bittiseksi JavaScript-luvuksi.
Yllä olevassa esimerkissä käytetään 4-bittisiä muuttomerkittömiä binäärilukuja. Siksi ~ 5 palauttaa 10.
Koska JavaScript käyttää 32-bittisiä merkittäviä kokonaislukuja, JavaScript palauttaa -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Merkittömät kokonaisluvut käyttävät vasenta bittiä miinusmerkinä.
Bittioperaatio AND
Kun suoritetaan bittioperaatio AND parin lukuilla, jos luvut ovat molemmat 1, palauttaa 1.
Yksikköesimerkki:
Laskutoimitus | Tulos |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Neljän bittin esimerkki:
Laskutoimitus | Tulos |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bittioperaatio OR
Kun suoritetaan bittioperaatio OR parin lukuilla, jos yksi luku on 1, palauttaa 1:
Yksikköesimerkki
Laskutoimitus | Tulos |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Neljän bittin laskutoimitus:
Toiminto | Tulos |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bittioperaatio XOR
Kun suoritetaan bittioperaatio XOR parin lukuilla, jos luvut ovat eri, palauttaa 1:
Yksikköesimerkki:
Laskutoimitus | Tulos |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Neljän bittin esimerkki:
Laskutoimitus | Tulos |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript bittioperaatio AND (&)
Jos kaikki bittiarvot ovat 1, bittioperaation AND palauttaa 1:
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Esimerkki
var x = 5 & 1;
JavaScript bittioperaatio OR (|)
Jos yksi numeromerkeistä on 1, bitti operaatio OR palauttaa 1:
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Esimerkki
var x = 5 | 1;
JavaScript bitti operaatio XOR (^)
Jos numeromerkit ovat erilaisia, XOR palauttaa 1:
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Esimerkki
var x = 5 ^ 1;
JavaScript bitti operaatio NOT (~)
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Esimerkki
var x = ~5;
JavaScript (nollapäistävä) bitti operaatio vasen siirtäminen (<<)
Tämä on nollapäistävä vasen siirtäminen. Yksi tai useampi nollamerkki siirtyy oikealle, ja vasemmanpuolisin merkki poistetaan:
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Esimerkki
var x = 5 << 1;
JavaScript (merkittävä) bitti operaatio oikea siirtäminen (>>)
Tämä on merkkiä säilyttävä oikea siirtäminen. Vasemmanpuolisin merkki siirtyy oikealle, ja oikeanpuolisin merkki poistetaan:
kymmenjärjestelmä | binääri |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Esimerkki
var x = -5 >> 1;
JavaScript (nollapäistävä) oikea siirtäminen (>>>)
Tämä on nollapäistävä oikea siirtäminen. Yksi tai useampi nollamerkki siirtyy vasemmalle, ja oikeanpuolisin merkki poistetaan:
kymmenjärjestelmä | binääri |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Esimerkki
var x = 5 >>> 1;
32-bittinen merkittävä kokonaisluku (binääri numero)
Yksi napin asettaminen 32-bittisessä kokonaisluvussa on hyvin ymmärrettävää:
Binääri-representointi | Decimal-arvo |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Lisäämällä useita numeraalisia sijoituksia paljastuu binäärimallin rakenne:
Binääri-representointi | Decimal-arvo |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Negatiiviset luvut ovat positiivisten binäärikomplementin lisääminen 1:
Binääri-representointi | Decimal-arvo |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Muunna decimal luku binääriksi
Esimerkki
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Muunna binääri luku decimaliksi
Esimerkki
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Edellinen sivu JS-structuurit
- Seuraava sivu JS-regulariteetit