Vad är bitvis operatörer?
I ett datorprogram är Bitwise -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 är representerad med ampersand & , eller med röret | och xor med caret ^. Inte, även känd som komplementoperatören, indikeras med en tilde ~ .
Rätt skiftoperatör använder en dubbelkaret pekande till höger >> . DäremotVänster skift indikeras av en vänsterpekande dubbelkaret <<<. Java inkluderar en annan högerförskjutningsoperation, som visas med en högerpekande trippelkaret >>> .
Bitwise-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 övergripande bitens positionresultat. 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 AN 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 operanderna.
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 - annars är resultatet en.
Vänster skift aND Höger skift Flytta bitarna i operanden till vänster eller höger med det angivna antalet 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änsteraste biten - tecknet bit - innan 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 rätt skiftad, kastas 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 lindas inte till den andra änden av operand.
Bitvis skiftoperationer är språk- och implementeringsberoende. Till exempel, i C och C ++, >> och << utföra logiska förändringar 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 aritmETIC -skift utförs alltid med >> och <<. Funktionen >>> används för en logisk högerförskjutning, men det är fortfarande möjligt att av misstag göra en aritmetisk rätt skift istället utan noggrann typ.
Komplikationer kan också uppstå när operander har olika bitlängder eller när vissa är undertecknade och vissa ä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.