Bitinius operatorius patogu naudoti, todėl kodas gali greitai sutrūkinėti. Sužinokite, kas tai yra ir kaip juos naudoti.

Bitiniai operatoriai yra tie, kurie veikia dvejetainiu lygiu. Jie dažnai labai greitai vykdomi ir paprastai veikia pagal du operandus.

Galite naudoti bitų operatorius, kad galėtumėte manipuliuoti dvejetainiais skaičiais, optimizuoti kodą, suspausti duomenis ir įdiegti grafikos ar žaidimų programavimo metodus. Kaip ir dauguma kitų programavimo kalbų, „JavaScript“ puikiai palaiko bitines operacijas.

Kas yra operatoriai?

Daugumoje programavimo kalbų naudojama „operatoriaus“ sąvoka – simbolis, nurodantis vertėjui atlikti konkrečią matematinę, reliacinę ar loginę operaciją.

Yra daug įvairių tipų JavaScript operatorius turėtumėte žinoti, nuo tų, kurie atrodo kaip standartiniai matematikos operatoriai, pvz., „+“, iki operatorių, kurie lygina dvi reikšmes. Bitiniai operatoriai yra specialus rinkinys, skirtas dvejetainiams skaičiams.

Bitų IR (&) operatorius

„JavaScript“ bitais IR (

instagram viewer
&) operatorius lygina atitinkamus dviejų bitus dvejetainiai operandai – skaičiai, kuriuose yra tik 0 ir 1. Kiekvienai įvesties bitų porai atitinkamas išvesties bitas yra „1“, jei abu įvesties bitai yra „1“ arba „0“, kitu atveju.

Štai bitinio AND operatoriaus sintaksė:

a ir b

Šiame pavyzdyje a ir b yra operandai, su kuriais atliekate bitų operaciją.

Štai kaip veikia bitų IR operatorius:

  1. IR operacija taikoma kiekvienai atitinkamų bitų porai a ir b iš dešinės į kairę.
  2. Jei abu bitai yra 1, rezultatas yra 1. Jei kuris nors bitas yra 0, rezultatas yra 0.
  3. Rezultatas yra naujas skaičius, kur kiekvienas bitas reiškia operacijos IR rezultatą atitinkamais bitais a ir b.

Pavyzdžiui:

leisti a = 50; // 00110010
leisti b = 100; // 01100100

leisti rezultatas = a & b; // 00100000

konsolė.log (rezultatas); // 32

Aukščiau pateiktame pavyzdyje a yra 50 dešimtainiu tikslumu, atitinkantis dvejetainį skaičių 00110010 ir b yra 100 dešimtainiu tikslumu, atitinkantis dvejetainį skaičių 01100100. Operatorius AND lygina kiekvieną atitinkamų bitų porą iš dešinės į kairę ir sukuria dvejetainį skaičių 00100000, kuris yra 32 dešimtainis.

Bitwise ARBA (|) operatorius

Bitiniai OR (|) operatorius palygina atitinkamus dviejų operandų bitus ir grąžina „1“, jei vienas arba abu bitai yra „1“ ir „0“, jei abu bitai yra „0“.

Štai bitinio OR operatoriaus sintaksė:

a | b

Kur a ir b yra operacijos operandai.

Bitų OR (|) operatorius veikia taip pat, kaip ir bitinis IR operatorius. Vienintelis skirtumas yra tas, kad ARBA operatorius grąžina „1“, jei „bet kuris“ iš bitų yra „1“ ir „0“, jei „abu“ bitai yra „0“.

Pavyzdžiui:

leisti a = 50; // 00110010
leisti b = 100; // 01100100

leisti rezultatas = a | b; // 01110110

konsolė.log (rezultatas); // 118

Aukščiau pateiktame pavyzdyje bitų OR operatorius lygina kiekvieną bitų porą iš dešinės į kairę (t. y. 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1, ir taip toliau). Gautas dvejetainis skaičius yra 01110110, kuris yra 118 dešimtainiu tikslumu.

Bitwise XOR (^) operatorius

Bitinis XOR (^) operatorius palygina atitinkamus dviejų operandų bitus ir grąžina „1“, jei bet kuris iš operandų, bet ne abu, yra „1“ ir „0“, jei abu operandai yra „1“ arba „0“.

Štai bitinio XOR operatoriaus sintaksė:

a ^ b

Kur a ir b yra operacijos operandai.

Bitiniai XOR operatoriai veikia taip pat, kaip ir bitiniai OR ir IR operatoriai. Vienintelis skirtumas yra tas, kad jis grąžina „1“, jei „bet kuris, bet ne abu“ yra „1“ ir „0“, jei „abu“ operandai yra „1“ arba „0“.

Pavyzdžiui:

leisti a = 50; // 00110010
leisti b = 100; // 01100100

leisti rezultatas = a ^ b; // 01010110

konsolė.log (rezultatas); // 86

Aukščiau pateiktame pavyzdyje XOR operatorius lygina kiekvieną bitų porą iš dešinės į kairę (t. y. 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0, ir taip toliau). Gautas dvejetainis skaičius yra 01010110, kuris yra 86 dešimtainis.

Bitiškai NE (~) Operatorius

Bitiškai NE (~) operatorius yra vienkartinis operatorius, kuris veikia su vienu sveikuoju skaičiumi invertuodamas visus jo bitus. Kitaip tariant, jis keičia kiekvieną "0" bitą į "1" ir kiekvieną "1" bitą į "0".

Štai bitinio NOT operatoriaus sintaksė:

~c

Kur c yra operandas.

Bitiškai NOT operatorius veikia apversdamas visus operando bitus, įskaitant ženklų bitus.

Pavyzdžiui:

leisti c = 10; // 00001010
leisti d = -10; // 11110110

konsolė.log(~c); // 11110101
konsolė.log(~d); // 00001001

Aukščiau pateiktame pavyzdyje operatorius NOT invertuoja visus bitus (t. y. 01, 10ir kt.), įskaitant ženklų bitus.

Kairysis Shift (<

Kairysis poslinkio operatorius perkelia duoto skaičiaus bitus į kairę. Operatorius paima du operandus: skaičių, kurį reikia perkelti, ir bitų skaičių, kuriuo jis perkeliamas.

Štai kairiojo poslinkio operatoriaus sintaksė:

a << b

Kur a yra operandas kairiojo poslinkio operatoriui ir b yra bitų skaičius, kuriuo operatorius perkels operandą.

Kairysis poslinkio operatorius veikia perkeldamas kiekvieną operando bitą į kairę nurodytu pozicijų skaičiumi ir išmesdamas perteklinius bitus, perkeltus į kairę.

Pavyzdžiui:

leisti a = 50; // 00110010
leisti b = 2;

leisti rezultatas = a << b; // 11001000

konsolė.log (rezultatas); // 200

Aukščiau pateiktame pavyzdyje kairiojo poslinkio operatorius perkėlė dvejetainės 00110010 dešimtainį 50 dviem vietomis. Gauta dvejetainė vertė yra 11001000, kuri yra 200 dešimtainė.

Ženklų dauginimo dešinysis poslinkis (>>) operatorius

Ženklą skleidžiantis poslinkis į dešinę (>>) perkelia skaičiaus bitus į dešinę, išsaugant pradinio skaičiaus ženklą. Operatorius paima du operandus: skaičių, kurį reikia perkelti, ir bitų skaičių, kuriuo jis perkeliamas.

Štai ženklus skleidžiančio dešiniojo poslinkio operacijos ženklo sintaksė:

a >> b

Kur a yra operandas dešiniojo poslinkio operatoriui ir b yra bitų skaičius, kuriuo operatorius perkels operandą.

Ženklą skleidžiantis dešinės pamainos operatorius veikia panašiai kaip kairiosios pamainos operatorius; vienintelis veikimo režimo skirtumas yra tas, kad dešinė pamaina išlaiko ženklą.

Pavyzdžiui:

leisti a = -50; // 11001110
leisti b = 2;

leisti rezultatas = a >> b; // 11110011

konsolė.log (rezultatas); // -13

Aukščiau pateiktame pavyzdyje poslinkio į dešinę operatorius perkėlė dešimtainį skaičių -50 (11001110) dviem tarpais į dešinę, todėl dešimtainis skaičius -13 (11110011).

Nepasirašytas dešinysis poslinkis (>>>) operatorius

Nepasirašytas poslinkis į dešinę (>>>) operatorius perkelia skaičiaus bitus į dešinę tam tikru skaičiumi pozicijų ir užpildo tuščias vietas kairėje nuliais. Operatorius išmeta perteklinius bitus, kuriuos perkelia į dešinę.

Štai nepasirašyto dešiniojo poslinkio operatoriaus sintaksė:

a >>> b

Kur a yra operandas dešiniojo poslinkio operatoriui ir b yra bitų skaičius, kuriuo operatorius perkels operandą.

Nepasirašytas dešinės pamainos operatorius veikia panašiai kaip ir dešinės pamainos. Tačiau, skirtingai nei dešinės pamainos operatorius (>>), perstumiant neišsaugo skaičiaus ženklo. Vietoj to, jis traktuoja skaičių kaip beženklį sveikąjį skaičių ir užpildo kairėje esantį bitą nuliu.

Pavyzdžiui:

leisti a = -5; // 11111111 11111111 11111111 11111011
leisti b = 2;

leisti rezultatas = a >>> b; // 00111111 11111111 11111111 11111110

konsolė.log (rezultatas); // 1073741822

Šiame pavyzdyje nepasirašyto dešiniojo poslinkio operatorius perkėlė „-5“ dviem tarpais į dešinę, veiksmingai pašalindamas ženklą ir gaudamas dešimtainį skaičių „1073741822“.

„Bitwise“ operatorių programos

Manipuliuodami atskirais dvejetainiais skaičiais esančiais bitais, bitų operatoriai gali sukurti sudėtingas funkcijas, kurias kitaip sunku arba neįmanoma pasiekti atliekant tradicines aritmetines operacijas.

Supratimas, kaip naudoti bitinius operatorius, gali padėti sukurti efektyvesnes ir našesnes žiniatinklio programas.