Bitové operátory C #: AND, OR, XOR, operace doplňku a posunu

V tomto kurzu se podrobně naučíte o operátorech bitového a bitového posunu v C #. C # poskytuje operátory 4 bitového a 2 bitového posunu.

Operátory bitového a bitového posunu se používají k provádění operací na bitové úrovni s celočíselnými (int, long atd.) A booleovskými daty. Tito operátoři se běžně nepoužívají v reálných situacích.

Pokud máte zájem prozkoumat více, navštivte praktické aplikace bitových operací.

Bitové operátory a operátory bitového posunu dostupné v C # jsou uvedeny níže.

Seznam bitových operátorů C #
Operátor Jméno operátora
~ Bitový doplněk
& Bitové AND
| Bitové NEBO
^ Bitový exkluzivní OR (XOR)
<< Bitový posun vlevo
>> Bitový posun doprava

Bitové NEBO

Bitový operátor OR je reprezentován |. Provádí bitovou operaci OR na odpovídajících bitech dvou operandů. Pokud některý z bitů je 1, výsledkem je 1. Jinak je výsledek 0.

Pokud jsou operandy typu bool, bitová operace OR je ekvivalentní logické operaci OR mezi nimi.

Například,

 14 = 00001110 (v binárním formátu) 11 = 00001011 (v binárním formátu)

Bitový ORprovoz mezi 14 a 11:

 00001110 00001011 -------- 00001111 = 15 (v desítkové soustavě)

Příklad 1: Bitový součet NEBO

 using System; namespace Operator ( class BitWiseOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber | secondNumber; Console.WriteLine("(0) | (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Když spustíme program, výstup bude:

14 | 11 = 15

Bitové AND

Bitový operátor AND je reprezentován &. Provádí bitovou operaci AND na odpovídajících bitech dvou operandů. Pokud některý z bitů je 0, výsledkem je 0. Jinak je výsledek 1.

Pokud jsou operandy typu bool, bitová operace AND je ekvivalentní logické operaci AND mezi nimi.

Například,

 14 = 00001110 (v binárním formátu) 11 = 00001011 (v binárním formátu)

Bitový provoz AND mezi 14 a 11:

 00001110 00001011 -------- 00001010 = 10 (v desítkové soustavě)

Příklad 2: Bitové AND

 using System; namespace Operator ( class BitWiseAND ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber & secondNumber; Console.WriteLine("(0) & (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Když spustíme program, výstup bude:

 14 a 11 = 10

Bitový XOR

Bitový operátor XOR je reprezentován ^. Provádí bitovou operaci XOR na odpovídajících bitech dvou operandů. Pokud jsou odpovídající bity stejné , výsledkem je 0. Pokud se odpovídající bity liší , výsledkem je 1.

Pokud jsou operandy typu bool, bitová operace XOR je ekvivalentní logické operaci XOR mezi nimi.

Například,

 14 = 00001110 (v binárním formátu) 11 = 00001011 (v binárním formátu)

Bitová operace XOR mezi 14 a 11:

 00001110 00001011 -------- 00000101 = 5 (v desítkové soustavě)

Pokud se chcete o používání Bitwise XOR dozvědět více, navštivte The Magic of XOR

Příklad 3: Bitový XOR

 using System; namespace Operator ( class BitWiseXOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber^secondNumber; Console.WriteLine("(0) (1) = (2)", firstNumber, secondNumber, result); ) ) ) 

Když spustíme program, výstup bude:

 14 11 = 5

Bitový doplněk

Operátor bitového doplňku je reprezentován ~. Je to unární operátor, tj. Pracuje pouze s jedním operandem. ~Operátor invertuje každý bitů tedy mohou změny 1-0 a 0 až 1.

Například,

 26 = 00011010 (v binárním formátu)

Bitový doplněk operace na 26:

 ~ 00011010 = 11100101 = 229 (v desítkové soustavě)

Příklad 4: Bitový doplněk

 using System; namespace Operator ( class BitWiseComplement ( public static void Main(string() args) ( int number = 26, result; result = ~number; Console.WriteLine("~(0) = (1)", number, result); ) ) ) 

Když spustíme program, výstup bude:

 ~ 26 = -27

Dostali jsme - 27jako výstup, když jsme očekávali 229. Proč se to stalo?

Stává se to proto, že binární hodnota, 11100101kterou očekáváme, 229je ve skutečnosti reprezentací doplňku 2 -27. Záporná čísla v počítači jsou reprezentována reprezentací doplňku 2.

Pro jakékoliv celé číslo n, 2 je doplněk nbude -(n+1).

Doplněk 2
Desetinný Binární Doplněk 2
0 00000000 - (11111111 + 1) = -00000000 = -0 (v desítkové soustavě)
1 00000001 - (11111110 + 1) = -11111111 = -256 (v desítkové soustavě)
229 11100101 - (00011010 + 1) = -00011011 = -27

Hodnoty přetečení jsou v doplňku 2 ignorovány.

Bitový doplněk 26je 229 (v desítkové soustavě) a doplněk 2 229je -27. Proto je výstup -27místo 229.

Bitový posun vlevo

Bitový operátor levého posunu je reprezentován <<. <<Operátor posune řadu doleva o zadaný počet bitů. K nejméně významným bitům se přidávají nuly.

V desítkové soustavě je ekvivalentní s

 počet * 2 bity

Například,

 42 = 101010 (v binárním formátu)

Operace posunu bitového zdvihu na 42:

 42 << 1 = 84 (v binárním formátu 1010100) 42 << 2 = 168 (v binárním formátu 10101000) 42 << 4 = 672 (v binárním formátu 1010100000)

Příklad 5: Bitový posun vlevo

 using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)<<1 = (1)", number, number<<1); Console.WriteLine("(0)<<2 = (1)", number, number<<2); Console.WriteLine("(0)<<4 = (1)", number, number<<4); ) ) ) 

Když spustíme program, výstup bude:

 42 << 1 = 84 42 << 2 = 168 42 << 4 = 672

Bitový posun doprava

Bitový operátor levého posunu je reprezentován >>. >>Operátor posune číslo vpravo od určitého počtu bitů. První operand je posunut doprava o počet bitů určený druhým operandem.

V desítkové soustavě je ekvivalentní s

 podlaha (počet / 2 bity)

Například,

 42 = 101010 (v binárním formátu)

Operace posunu bitového zdvihu na 42:

 42 >> 1 = 21 (v binární 010101) 42 >> 2 = 10 (v binární 001010) 42 >> 4 = 2 (v binární 000010)

Příklad 6: Bitový posun doprava

 using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)>>1 = (1)", number, number>>1); Console.WriteLine("(0)>>2 = (1)", number, number>>2); Console.WriteLine("(0)>>4 = (1)", number, number>>4); ) ) ) 

Když spustíme program, výstup bude:

 42 >> 1 = 21 42 >> 2 = 10 42 >> 4 = 2

Zajímavé články...