Kas yra „Bitwise“ operatoriai?

Kompiuterio programoje bitiniai operatoriai yra operatoriai, skirti manipuliuoti išraiškų bitų šablonais. Bitiškai IR, ARBA, išskirtinis ARBA (XOR), NOT, poslinkis į dešinę ir poslinkis į kairę yra įprastos operacijos. Dauguma kompiuterių programavimo kalbų apima visus šešis šiuos operatorius. Jie dažnai naudojami atskiriems bitams nustatyti, išvalyti arba apversti programose, kurios valdo kompiuterio aparatinę įrangą. Bitiniai operatoriai taip pat dažnai naudojami duomenų šifravimo ir glaudinimo algoritmuose.

Įprasti bitų operatoriai paprastai vaizduojami simboliškai tokiose programavimo kalbose kaip C, C++ ir Java. Jie naudojami išraiškose taip pat, kaip ir aritmetiniai operatoriai, tokie kaip pliuso ar minuso ženklai. Bitinio dydžio operatorius AND pavaizduotas ampersandu &, ARBA su vamzdžiu | ir XOR su caret ^. NOT, taip pat žinomas kaip komplemento operatorius, žymimas tilde ~.

Dešinės pamainos operatorius naudoja dvigubą ženklą, nukreiptą į dešinę >>. Priešingai, poslinkis į kairę rodomas į kairę nukreiptu dvigubu tašku . „Java“ apima dar vieną poslinkio į dešinę operaciją, parodytą su dešiniuoju trigubu ženklu >>>.

Bitiniai operatoriai taiko loginę operaciją kiekvienai savo operandų bitų porai. NE, poslinkis į dešinę ir poslinkis į kairę turi tik vieną tikrąjį operandą; antroji reikšmė poslinkio operacijose yra bitų skaičius. Kad geriau suprastų, kaip veikia bitiniai operatoriai, asmuo gali vizualizuoti savo operandus kaip dvejetainius skaičius. Pavyzdžiui, komplemento operatorius apverčia kiekvieną savo vieno operando bitą į priešingą būseną. Vienetas tampa nuliu, o nulis – vienetu. 8 bitų dvejetainės reikšmės 00110101 papildymas yra 11001010.

IR operatorius turi du operandus. Bitas po bito, naudojant vieną atitinkamą bitą iš kiekvieno operando, atliekama loginė IR operacija. Kiekvienos bitų operacijos rezultatas dedamas toje bendro rezultato bito vietoje. Pavyzdžiui, operatorius AND apdoros vieno operando 7 bitą su kito operando 7 bitu. Rezultatas bus saugomas 7 bendro rezultato bite.

Atliekant operaciją IR, abu operando bitai turi būti vienetai, kad rezultatas būtų vienas, kitu atveju rezultatas lygus nuliui. Pavyzdžiui, jei 8 bitų dvejetainės operandų reikšmės yra 00110101 ir 11110000, rezultatas bus 00110000. Įprastas operacijos AND naudojimas yra tam tikrų rezultato bitų pašalinimas. Tai daroma įdedant nulius tose bitų vietose viename iš operandų.
Atliekant ARBA operaciją, abu operando bitai turi būti nuliai, kad rezultatas būtų lygus nuliui; kitu atveju rezultatas vienas. Įprastas operatoriaus OR naudojimas yra nustatyti tam tikrus rezultato bitus į vienetus. Tai atliekama viename iš operandų dedant vienus į tas bitų pozicijas. XOR operacijos rezultatas yra nulis, jei abu operando bitai yra nuliai arba jei abu operando bitai yra vienas – priešingu atveju rezultatas yra vienas.
Poslinkis į kairę ir į dešinę perkelia operando bitus į kairę arba į dešinę nurodytu bitų pozicijų skaičiumi. Loginis poslinkis į dešinę perkelia nulį į kairiausią bitą kaip poslinkio dalį. Aritmetinis poslinkis į dešinę nukopijuoja kairiausią bitą – ženklo bitą – prieš poslinkį į tą pačią padėtį po poslinkio. Originalus antgalis taip pat perkeliamas į dešinę kartu su likusia dalimi. Bet kurio tipo poslinkis į kairę perkelia nulį į dešinįjį bitą.
Kai operandas perkeliamas į dešinę, dešinysis bitas prieš poslinkį tiesiog išmetamas. Panašiai pašalinamas kairysis antgalis prieš pamainą į kairę. Jis neapsieina į kitą operando galą.
Bitinio poslinkio operacijos priklauso nuo kalbos ir įgyvendinimo. Pavyzdžiui, C ir C++, >> ir atlikite loginius poslinkius, jei operandas yra beženklis sveikasis skaičius. Jei operandas yra sveikasis skaičius, tikėtina, kad vietoj jo bus atliktas aritmetinis poslinkis. Java programoje visi operandai laikomi pasirašytais, o aritmetiniai poslinkiai visada atliekami naudojant >> ir . Operatorius >>> naudojamas loginiam poslinkiui į dešinę, tačiau vis tiek galima netyčia atlikti aritmetinį poslinkį į dešinę be kruopštaus tipo rašymo.
Komplikacijų taip pat gali kilti, kai operandai turi skirtingą bitų ilgį arba kai kurie yra pasirašyti, o kai kurie – be ženklų. Bitiniai operatoriai ir skaitmeninės konstantos sudėtingos išraiškos viduryje gali būti neįvertintos taip, kaip tikėtasi. Reikia pasirūpinti, kad išraiškoje būtų nurodytas kiekvieno kiekio dydis ir pasirašytas/nepasirašytas pobūdis. Tai galima padaryti kruopščiai nustatant tipą arba tarpinius priskyrimus tam tikriems kintamųjų tipams programos kode.