Skip to main content

Hva er bitvis operatører?

I et dataprogram er bitvis 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 å sette, rydde eller snu individuelle biter i programmer som kontrollerer datamaskinvare.Bitvise operatører brukes også ofte i datakryptering og kompresjonsalgoritmer.

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

Høyre skiftoperatør bruker en dobbeltkaret som peker mot høyre .I kontrast er venstre skift indikert med en venstre-pekende dobbeltkaret <<.Java inkluderer en annen høyre skiftoperasjon, vist med en høyre-pekepinne trippelkaret .

Bitvis operatører bruker en logisk operasjon til hvert par biter i sine operander.Ikke, høyre skift og venstre skift har bare en ekte operand;Den andre verdien i skiftoperasjoner er bittellingen.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 enkelt operand til motsatt tilstand.En blir en null og null blir en.Komplementet til 8-biters binære verdi 00110101 er 11001010.

og operatøren har to operander.Bit etter bit utføres en logisk og operasjon ved hjelp av en tilsvarende bit fra hver operand.Utfallet av hver bitoperasjon er plassert i den bitposisjonen til det samlede resultatet.For eksempel vil og operatøren behandle bit 7 av en operand med bit 7 av den andre operanden.Utfallet vil bli lagret i bit 7 av det samlede resultatet.

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

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

Venstre skift og høyre skift Flytt bitene i operand venstre eller høyre med det angitte nummeretav bitposisjoner.Et logisk høyre skift beveger seg et null til venstre som en del av skiftet.En aritmetisk høyre skift kopierer den venstre bit mdash; skiltbiten mdash; før skiftet til samme stilling etter skiftet.Den opprinnelige biten er også forskjøvet rett sammen med resten.Enten type venstre skift beveger seg et null til høyre.Tilsvarende blir den venstre biten før et venstre skift avhendes.Den vikles ikke rundt til den andre enden av operanden.

Bitvis skiftoperasjoner er språk- og implementeringsavhengige.For eksempel i C og C ++,

og utfør logiske skift hvis operanden er et usignert heltall.Hvis operanden er et signert heltall, er det sannsynlig at et aritmetisk skifte vil bli gjort i stedet.I Java anses alle operander som signerte, og aritmetiske skift eralltid utført med og <<. -operatøren brukes til et logisk riktig skift, men det er fortsatt mulig å ved et uhell gjøre et aritmetisk riktig skift i stedet uten nøye typekasting.

Det kan også oppstå komplikasjoner når operander har forskjellige bitlengder eller når noen er signert ogNoen er usignert.Bitvise operatører og numeriske konstanter midt i et komplekst uttrykk kan ikke evalueres som forventet.Det må utvises forsiktighet for å spesifisere størrelsen og signert/usignert karakter av hver mengde i uttrykket.Dette kan gjøres med nøye typekasting eller midlertidige oppgaver til spesifikke variable typer i programkode.