Skip to main content

Hvad er bitvis 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 kontrollerer computerhardware.Bitvise operatører bruges også ofte i datakrypterings- og kompressionsalgoritmer.

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 minus tegn ville være.Den bitvise operatør og er repræsenteret med Ampersand eller med røret | og xor med caret ^.Ikke, også kendt som komplementoperatøren, er indikeret med en Tilde ~ .

Den rigtige skiftoperatør bruger en dobbelt-caret, der peger på højre .I modsætning hertil er venstre skift indikeret af en venstre punkterende dobbeltkaret <<.Java inkluderer en anden højre skiftoperation, vist med en højrepointing tredobbelt-caret .

Bitvis 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 bittællingen.For bedre at forstå, hvor bitvis operatører fungerer, kan en person visualisere deres operander som binære tal.For eksempel vipper komplementoperatøren 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.

The and Operator har to operander.Lidt efter lidt udføres en logisk og operation ved hjælp af en tilsvarende bit fra hver operand.Resultatet af hver bit -operation placeres i den bitposition af det samlede resultat.For eksempel behandler AND -operatøren bit 7 af den ene operand med bit 7 af den anden operand.Resultatet gemmes i bit 7 af det samlede resultat.

I en og operation skal begge operandbits være dem, for at resultatet skal være en, 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 anvendelse af og operatøren er at nulstille bestemte bits i resultatet.Dette gøres ved at placere nuller i disse bitpositioner i en af operanderne.

I en OR -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 visse bit af resultatet til dem.Dette gøres ved at placere dem i disse bitpositioner i en af operanderne.For XOR -operationen er resultatet nul, hvis begge operandbits er nul, eller hvis begge operandbits er en mdash; ellers er resultatet et.

Venstre skift og højre skift bevæger bitene i operanden til venstre eller højre med det specificerede nummeraf bitpositioner.Et logisk højre skift bevæger en nul ind i den venstre bit som en del af skiftet.En aritmetisk højre skift kopierer den venstre bit mdash; tegnet bit mdash; før skiftet i samme position efter skiftet.Den originale bit forskydes også lige sammen med resten.Enten type venstre skift bevæger sig en nul ind i den højre bit.

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

Bitvis skiftoperationer er sprog- og implementeringsafhængig.F.eks. I C og C ++ udfører og << logiske skift, hvis operanden er et usigneret heltal.Hvis operanden er et underskrevet heltal, er det sandsynligt, at der i stedet udføres et aritmetisk skift.I Java betragtes alle operander som underskrevet, og aritmetiske skift erAltid udført med og <<.Operatøren bruges til et logisk højre skift, men det er stadig muligt at ved en fejltagelse foretage 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 underskrives ogNogle er usignerede.Bitvise operatører og numeriske konstanter midt i et komplekst udtryk kan muligvis ikke evalueres som forventet.Der skal udvises omhu for at specificere størrelsen og underskrevet/usigneret karakter af hver mængde i udtrykket.Dette kan gøres med omhyggelig typecasting eller foreløbige opgaver til specifikke variable typer i programkode.