JavaScript bityt

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;

Kokeile itse

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;

Kokeile itse

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;

Kokeile itse

JavaScript bitti operaatio NOT (~)

kymmenjärjestelmä binääri
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

Esimerkki

var x = ~5;

Kokeile itse

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;

Kokeile itse

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;

Kokeile itse

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;

Kokeile itse

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

Kokeile itse

Muunna binääri luku decimaliksi

Esimerkki

function bin2dec(bin){
    return parseInt(bin, 2).toString(10);
}

Kokeile itse