Bitové operátory C #: AND, OR, XOR, operácie s komplementom a posunom

V tomto tutoriáli sa dozvieme podrobne o operátoroch 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 sa používajú na vykonávanie operácií na bitovej úrovni s celočíselnými (int, long atď.) A boolovskými údajmi. Tieto operátory sa bežne nepoužívajú v skutočných situáciách.

Ak máte záujem preskúmať viac, navštívte praktické aplikácie bitových operácií.

Bitové operátory a operátory bitového posunu dostupné v C # sú uvedené nižšie.

Zoznam bitových operátorov C #
Prevádzkovateľ Meno operátora
~ Bitový doplnok
& Bitové AND
| Bitové ALEBO
^ Bitový exkluzívny ALEBO (XOR)
<< Bitový posun vľavo
>> Bitový posun doprava

Bitové ALEBO

Bitový operátor OR je zastúpený |. Vykonáva bitovú operáciu OR na zodpovedajúcich bitoch dvoch operandov. Ak niektorý z bitov je 1, výsledok je 1. Inak je výsledok 0.

Ak sú operandy typu bool, bitová operácia OR je ekvivalentná logickej operácii OR medzi nimi.

Napríklad,

 14 = 00001110 (v binárnom formáte) 11 = 00001011 (v binárnom formáte)

Bitová ORprevádzka medzi 14 a 11:

 00001110 00001011 -------- 00001111 = 15 (v desiatkovej sústave)

Príklad 1: Bitové ALEBO

 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); ) ) ) 

Keď spustíme program, výstup bude:

14 | 11 = 15

Bitové AND

Bitový operátor AND je reprezentovaný &. Vykonáva bitovú operáciu AND na zodpovedajúcich bitoch dvoch operandov. Ak niektorý z bitov je 0, výsledok je 0. Inak je výsledok 1.

Ak sú operandy typu bool, bitová operácia AND je ekvivalentná logickej operácii AND medzi nimi.

Napríklad,

 14 = 00001110 (v binárnom formáte) 11 = 00001011 (v binárnom formáte)

Bitová operácia AND medzi 14 a 11:

 00001110 00001011 -------- 00001010 = 10 (v desatinnom formáte)

Príklad 2: Bitový operátor 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); ) ) ) 

Keď spustíme program, výstup bude:

 14 a 11 = 10

Bitový XOR

Bitový operátor XOR je reprezentovaný ^. Vykonáva bitovú operáciu XOR na zodpovedajúcich bitoch dvoch operandov. Ak sú zodpovedajúce bity rovnaké , výsledkom je 0. Ak sú zodpovedajúce bity odlišné , výsledkom je 1.

Ak sú operandy typu bool, bitová operácia XOR je ekvivalentná logickej operácii XOR medzi nimi.

Napríklad,

 14 = 00001110 (v binárnom formáte) 11 = 00001011 (v binárnom formáte)

Bitová prevádzka XOR medzi 14 a 11:

 00001110 00001011 -------- 00000101 = 5 (v desatinnom formáte)

Ak sa chcete o používaní Bitwise XOR dozvedieť viac, navštívte stránku The Magic of XOR

Prí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); ) ) ) 

Keď spustíme program, výstup bude:

 14 11 = 5

Bitový doplnok

Operátor bitového doplnku je zastúpený ~. Je to unárny operátor, tj. Pracuje iba s jedným operandom. ~Operátor invertuje každý bitov teda môžu zmeny 1-0 a 0 až 1.

Napríklad,

 26 = 00011010 (v binárnom formáte)

Operácia bitového doplnku dňa 26:

 ~ 00011010 = 11100101 = 229 (v desatinnom formáte)

Príklad 4: Bitový doplnok

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

Keď spustíme program, výstup bude:

 ~ 26 = -27

Dostali sme sa - 27ako výstup, keď sme čakali 229. Prečo sa to stalo?

Stáva sa to preto, lebo binárna hodnota, 11100101ktorú očakávame, 229je v skutočnosti reprezentáciou doplnku 2 -27. Záporné čísla v počítači sú zastúpené v zastúpení doplnku 2.

Pre akékoľvek celé číslo n, 2 je doplnok nbude -(n+1).

Doplnok 2
Desatinné miesto Binárne Doplnok 2
0 00000000 - (11111111 + 1) = -00000000 = -0 (v desiatkovej sústave)
1 00000001 - (11111110 + 1) = -11111111 = -256 (v desiatkovej sústave)
229 11100101 - (00011010 + 1) = -00011011 = -27

Hodnoty pretečenia sú v doplnku 2 ignorované.

Bitový doplnok 26čísla je 229 (v desatinnej sústave) a doplnok čísla 2 229je -27. Preto je výstup -27namiesto 229.

Bitový posun vľavo

Bitový operátor ľavého posunu je reprezentovaný <<. <<Operátor posunie rad doľava o zadaný počet bitov. K najmenej významným bitom sa pridávajú nuly.

V desiatkovej sústave je ekvivalentom k

 počet * 2 bity

Napríklad,

 42 = 101010 (v binárnom formáte)

Operácia bitového posunu zdvihu na 42:

 42 << 1 = 84 (v binárnom formáte 1010100) 42 << 2 = 168 (v binárnom formáte 10101000) 42 << 4 = 672 (v binárnom formáte 1010100000)

Príklad 5: Bitový posun vľavo

 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); ) ) ) 

Keď spustíme program, výstup bude:

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

Bitový posun doprava

Bitový operátor ľavého posunu je reprezentovaný >>. >>Operátor posunie číslo vpravo od určitého počtu bitov. Prvý operand je posunutý doprava o počet bitov určený druhým operandom.

V desiatkovej sústave je ekvivalentom k

 poschodie (počet / 2 bity)

Napríklad,

 42 = 101010 (v binárnom formáte)

Operácia bitového posunu zdvihu na 42:

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

Prí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); ) ) ) 

Keď spustíme program, výstup bude:

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

Zaujímavé články...