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á OR
prevá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 - 27
ako výstup, keď sme čakali 229
. Prečo sa to stalo?
Stáva sa to preto, lebo binárna hodnota, 11100101
ktorú očakávame, 229
je 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 n
bude -(n+1)
.
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 229
je -27
. Preto je výstup -27
namiesto 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