Hva er Bitvis-operatører?

I et dataprogram er bitvise operatører operatører for å manipulere bitmønstre i uttrykk. Bitvis OG, ELLER, eksklusiv ELLER (XOR), IKKE, høyre skift og venstre skift er vanlige operasjoner. De fleste dataprogrammeringsspråk inkluderer alle seks av disse operatørene. De brukes ofte til å stille inn, tømme eller vende individuelle biter i programmer som styrer datamaskinens maskinvare. Bitvise operatører brukes også ofte i datakryptering og komprimeringsalgoritmer.

De vanlige bitvise operatørene er vanligvis representert symbolsk i programmeringsspråk som C, C ++ og Java. De brukes i uttrykk akkurat som aritmetiske operatører som pluss- eller minustegn ville være. Den bitvise operatøren OG er representert med ampersand & , ELLER med røret | og XOR med vogten ^ . IKKE, også kjent som komplementoperatøren, er indikert med en tilde ~ .

Operatøren til høyre skift bruker en dobbeltkarm som peker mot høyre >> . I kontrast indikeres venstreskift med en venstre pekende dobbeltkaret << . Java inkluderer en annen høyre skiftoperasjon, vist med en høyre pekende trippelkaret >>> .

Bitvise operatører bruker en logisk operasjon for hvert par av bitene i operandene sine. IKKE, høyre skifte og venstre skift har bare en sann operand; den andre verdien i skiftoperasjoner er bitantalet. For bedre å forstå hvordan bitvise operatører fungerer, kan en person visualisere operandene sine som binære tall. For eksempel vipper komplementoperatøren hver bit av sin ene operand til motsatt tilstand. En blir null og null blir en. Komplementet til den 8-biters binære verdien 00110101 er 11001010.

AND-operatøren har to operander. Bit for bit utføres en logisk OG-operasjon ved bruk av en tilsvarende bit fra hver operand. Utfallet av hver bitoperasjon blir plassert i den bitposisjonen til det totale resultatet. For eksempel vil AND-operatøren behandle bit 7 i den ene operanden med bit 7 i den andre operanden. Utfallet vil bli lagret i bit 7 av det totale resultatet.

I en OG-operasjon må begge operandbiter være de for at resultatet skal være ett, ellers er resultatet null. For eksempel, hvis 8-biters binære verdier for operandene er 00110101 og 11110000, vil resultatet være 00110000. En vanlig bruk av AND-operatøren er å nullstille bestemte biter i resultatet. Dette gjøres ved å plassere nuller i de bitposisjonene i en av operandene.

I en OR-operasjon må begge operandbiter være nuller for at resultatet skal være null; Ellers er resultatet ett. En vanlig bruk av OR-operatøren er å angi bestemte biter av resultatet til dem. Dette gjøres ved å plassere de i de bitposisjonene i en av operandene. For XOR-operasjonen er resultatet null hvis begge operandbits er null eller hvis begge operandbitene er ett - ellers er resultatet ett.

Venstre skift og høyre skift beveger bitene i operanden til venstre eller høyre med det angitte antallet bitposisjoner. Et logisk høyre skift flytter en null inn i den venstre biten som en del av skiftet. Et aritmetisk høyre skift kopierer den venstre biten - tegnbiten - før skiftet til samme posisjon etter skiftet. Den originale biten forskyves også til høyre sammen med resten. Enten type venstre skift flytter en null inn i den høyre biten.

Når en operand er skiftet til høyre, kastes den høyre biten før skiftet rett og slett. Tilsvarende den venstre biten før et venstre skift blir avhendt. Den vikler seg ikke til den andre enden av operanden.

Bitvis skiftoperasjoner er språk- og implementeringsavhengige. For eksempel i C og C ++, >> og << utføre logiske skift hvis operanden er et usignert heltall. Hvis operanden er et signert heltall, er det sannsynlig at det blir gjort et aritmetisk skifte i stedet. I Java anses alle operander som signerte, og aritmetiske skift utføres alltid med >> og << . >>> -operatøren brukes til et logisk høyreskifte, men det er fremdeles mulig å utføre et aritmetisk høyre skifte i stedet uten nøye typekasting.

Komplikasjoner kan også oppstå når operander har forskjellige bitlengder eller når noen er signert og noen ikke er signert. Bitvise operatører og numeriske konstanter midt i et komplekst uttrykk kan ikke vurderes som forventet. Det må utvises forsiktighet for å spesifisere størrelsen og signert / usignert art for hver mengde i uttrykket. Dette kan gjøres med nøye typekasting eller mellomliggende tilordninger til spesifikke variabeltyper i programkode.

ANDRE SPRÅK

Hjalp denne artikkelen deg? Takk for tilbakemeldingen Takk for tilbakemeldingen

Hvordan kan vi hjelpe? Hvordan kan vi hjelpe?