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ý OR
provoz 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 - 27
jako výstup, když jsme očekávali 229
. Proč se to stalo?
Stává se to proto, že binární hodnota, 11100101
kterou očekáváme, 229
je 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 n
bude -(n+1)
.
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 26
je 229 (v desítkové soustavě) a doplněk 2 229
je -27
. Proto je výstup -27
mí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