Skip to main content

Vad är bitvis operatörer?

I ett datorprogram är bitvis operatörer operatörer för att manipulera bitmönster i uttryck.Bitvis och, eller, exklusivt eller (xor), inte, höger skift och vänster skift är vanliga operationer.De flesta datorprogrammeringsspråk inkluderar alla sex av dessa operatörer.De används ofta för att ställa in, rensa eller vända enskilda bitar i program som styr datormaskinvara.Bitvisa operatörer används också ofta i datakrypterings- och kompressionsalgoritmer.

De vanliga bitvis operatörerna representeras vanligtvis symboliskt på programmeringsspråk som C, C ++ och Java.De används i uttryck precis som aritmetiska operatörer som plus eller minustecken skulle vara.Bitvis operatör och representeras med ampersand , eller med röret | och xor med caret ^.Inte, även känd som komplementoperatören, indikeras med en tilde ~ .

Den högra skiftoperatören använder en dubbelkaret som pekar till höger .Däremot indikeras vänsterskift av en vänsterpekande dubbelkaret <<.Java innehåller en annan högerförskjutningsoperation, som visas med en högerpekande trippelkaret .

Bitvis operatörer tillämpar en logisk operation på varje par bitar i sina operander.Inte, höger skift och vänster skift har bara en riktig operand;Det andra värdet i skiftoperationer är biträkningen.För att bättre förstå hur bitvis operatörer fungerar kan en individ visualisera sina operander som binära siffror.Till exempel vänder komplementoperatören varje bit av sin enda operand till motsatt tillstånd.En blir noll och en noll blir en.Komplementet för det 8-bitars binära värdet 00110101 är 11001010.

OCH Operatören har två operander.Bit för bit utförs en logisk och operation med en motsvarande bit från varje operand.Resultatet av varje bitoperation placeras i den bitpositionen för det totala resultatet.Till exempel kommer OCH operatören att bearbeta bit 7 av en operand med bit 7 av den andra operanden.Resultatet kommer att lagras i bit 7 av det totala resultatet.

I en och operation måste båda operandbitarna vara sådana för att resultatet ska vara en, annars är resultatet noll.Till exempel, om de 8-bitars binära värdena för operanderna är 00110101 och 11110000, kommer resultatet att vara 00110000. En vanlig användning av och operatören är att noll ut särskilda bitar i resultatet.Detta görs genom att placera nollor i dessa bitpositioner i en av operander.

I en eller operation måste båda operandbitarna vara nollor för att resultatet ska vara noll;Annars är resultatet en.En vanlig användning av OR -operatören är att ställa in vissa bitar av resultatet till sådana.Detta görs genom att placera dem i dessa bitpositioner i en av operanderna.För XOR -operationen är resultatet noll om båda operandbitarna är noll eller om båda operandbitarna är en mdash; annars är resultatet en.

Vänster skift och höger skift flyttar bitarna i operanden till vänster eller höger med det angivna numretav bitpositioner.En logisk högerförskjutning flyttar noll in i den vänstra biten som en del av skiftet.En aritmetisk höger skift kopierar den vänstra biten mdash; skylten bit mdash; före skiftet till samma position efter skiftet.Den ursprungliga biten flyttas också rätt tillsammans med resten.Endera typen av vänster skift flyttar noll till den högra biten.

När en operand är högerförskjuten, den högra biten innan skiftet helt enkelt kastas bort.På samma sätt bortskaffas den vänstra biten före en vänster skift.Det slår inte runt till den andra änden av operanden.

Bitvis skiftoperationer är språk- och implementeringsberoende.Till exempel i C och C ++ utför och << logiska skift om operanden är ett osignerat heltal.Om operanden är ett signerat heltal är det troligt att en aritmetisk förändring kommer att göras istället.I Java betraktas alla operander som signerade och aritmetiska förskjutningar ärUtförs alltid med och <<.Operatören används för en logisk högerförskjutning, men det är fortfarande möjligt att av misstag göra en aritmetisk högerförskjutning istället utan noggrann typ.

Komplikationer kan också uppstå när operand har olika bitlängder eller när vissa är undertecknade ochVissa är osignerade.Bitvisa operatörer och numeriska konstanter i mitten av ett komplext uttryck kanske inte utvärderas som förväntat.Man måste vara försiktig för att specificera storleken och signerad/osignerad karaktär för varje kvantitet i uttrycket.Detta kan göras med noggrann typCASTING eller interimtilldelningar till specifika variabla typer i programkod.