Hvad er bitvise operatører?

I et computerprogram er bitvise operatører operatører til at manipulere bitmønstre i udtryk. Bitvis OG, ELLER, eksklusiv ELLER (XOR), IKKE, højre skift og venstre skift er almindelige operationer. De fleste computerprogrammeringssprog inkluderer alle seks af disse operatører. De bruges ofte til at indstille, rydde eller vende individuelle bits i programmer, der styrer computerhardware. Bitvise operatører bruges også ofte i datakryptering og komprimeringsalgoritmer.

De almindelige bitvise operatører er normalt repræsenteret symbolsk i programmeringssprog som C, C ++ og Java. De bruges i udtryk, ligesom aritmetiske operatører som plus- eller minustegn ville være. Den bitvise operatør AND er repræsenteret med ampersand & , ELLER med røret | og XOR med kuglen ^ . IKKE, også kendt som komplementoperatøren, er angivet med en tilde ~ .

Den højre skiftoperatør bruger en dobbelt caret, der peger mod højre >> . I modsætning hertil er venstre skift angivet med en venstre pegende dobbeltvægt << . Java inkluderer en anden højre skiftoperation, vist med en højre-pegende tredobbelt caret >>> .

Bitvise operatører anvender en logisk operation på hvert par bits i deres operander. IKKE, højre skift og venstre skift har kun en ægte operand; den anden værdi i skiftoperationer er bitantalet. For bedre at forstå, hvordan bitvise operatører fungerer, kan en person visualisere deres operander som binære tal. For eksempel vender komplementoperatoren hver bit af sin enkelt operand til den modsatte tilstand. En bliver en nul og en nul bliver en. Komplementet af den 8-bit binære værdi 00110101 er 11001010.

AND-operatøren har to operander. Bit for bit udføres en logisk OG-operation ved hjælp af en tilsvarende bit fra hver operand. Resultatet af hver bitoperation placeres i den bitposition af det samlede resultat. For eksempel vil AND-operatøren behandle bit 7 i den ene operand med bit 7 i den anden operand. Resultatet gemmes i bit 7 af det samlede resultat.

I en AND-operation skal begge operandbits være dem for at resultatet skal være et, ellers er resultatet nul. For eksempel, hvis de 8-bit binære værdier for operanderne er 00110101 og 11110000, vil resultatet være 00110000. En almindelig brug af AND-operatoren er at nullægge bestemte bit i resultatet. Dette gøres ved at placere nuller i disse bitpositioner i en af ​​operanderne.

I en OR-operation skal begge operandbits være nuller for at resultatet skal være nul; Ellers er resultatet et. En almindelig brug af OR-operatøren er at indstille bestemte bit af resultatet til dem. Dette gøres ved at placere dem i disse bitpositioner i en af ​​operanderne. For XOR-betjeningen er resultatet nul, hvis begge operandbits er nul, eller hvis begge operandbits er en - ellers er resultatet et.

Venstre skift og højre skift bevæger bitene i operanden til venstre eller højre med det specificerede antal bitpositioner. Et logisk højre skift flytter et nul ind i den venstre bit som en del af skiftet. Et aritmetisk højre skift kopierer den venstre bit - tegnbiten - inden skiftet til samme position efter skiftet. Den originale bit forskydes også til højre sammen med resten. Enten af ​​venstre skift flytter et nul ind i den højre bit.

Når en operand er skiftet til højre, kastes den højre bit før skiftet simpelthen væk. Tilsvarende bortskaffes den venstre bit før et venstre skift. Det bryder ikke rundt til den anden ende af operanden.

Bitvis skiftoperationer er sprog- og implementeringsafhængige. F.eks. Udfører i C og C ++, >> og << logiske skift, hvis operanden er et usigneret heltal. Hvis operanden er et underskrevet heltal, er det sandsynligt, at der sker et aritmetisk skift i stedet. I Java betragtes alle operander som underskrevne, og aritmetiske skift udføres altid med >> og << . >>> -operatøren bruges til et logisk højre skift, men det er stadig muligt ved et uheld at udføre et aritmetisk højre skift i stedet uden omhyggelig typecasting.

Komplikationer kan også opstå, når operander har forskellige bitlængder, eller når nogle er underskrevet og nogle ikke er underskrevet. Bitvise operatører og numeriske konstanter midt i et komplekst udtryk vurderes muligvis ikke som forventet. Der skal udvises omhu for at specificere størrelsen og signeret / usigneret karakter for hver mængde i udtrykket. Dette kan gøres med omhyggelig typecasting eller interimsopgaver til specifikke variabeltyper i programkode.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?