Šajā apmācībā mēs detalizēti uzzināsim par bitu un bitu nobīdes operatoriem C #. C # nodrošina 4 bitu un 2 bitu nobīdes operatorus.
Bitu un bitu maiņas operatorus izmanto, lai veiktu bitu līmeņa darbības ar veselu skaitli (int, long utt.) Un Būla datiem. Šie operatori parasti netiek izmantoti reālās dzīves situācijās.
Ja jūs vēlaties uzzināt vairāk, apmeklējiet praktiskas bitdarbības darbības.
Zemāk ir uzskaitīti bitu un bitu maiņas operatori, kas pieejami C #.
Operatoru C # Bitwise sarakstsOperators | Operatora nosaukums |
---|---|
~ | Bitwise papildinājums |
& | Bitu virzienā UN |
| | Bitwise OR |
^ | Bitu pārraides ekskluzīvs VAI (XOR) |
<< | Pa kreisi Shift |
>> | Pa labi pa labi |
Bitwise OR
Operatoru Bitwise OR pārstāv |
. Tas veic operāciju pa bitiem VAI divu operandu attiecīgajiem bitiem. Ja kāds no bitiem ir 1
, rezultāts ir 1
. Pretējā gadījumā rezultāts ir 0
.
Ja operandi ir tipa bool
, operācija bitu bitu režīmā ir līdzvērtīga loģiskai VAI operācijai starp tām.
Piemēram,
14 = 00001110 (binārā) 11 = 00001011 (binārā)
OR
Darbība pa bitēm starp 14 un 11:
00001110 00001011 -------- 00001111 = 15 (aiz komata)
1. piemērs
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); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
14 | 11 = 15
Bitu virzienā UN
Operatoru Bitwise AND attēlo &
. Tas veic bitu un operāciju ar atbilstošajiem divu operandu bitiem. Ja kāds no bitiem ir 0
, rezultāts ir 0
. Pretējā gadījumā rezultāts ir 1
.
Ja operandi ir tipa bool
, bitu darbība AND ir ekvivalenta loģiskajai UN operācijai starp tām.
Piemēram,
14 = 00001110 (binārā) 11 = 00001011 (binārā)
Bitu pa vidu UN darbība starp 14 un 11:
00001110 00001011 -------- 00001010 = 10 (aiz komata)
2. piemērs
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); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
14 un 11 = 10
Bitor XOR
Operatoru Bitwise XOR attēlo ^
. Tas veic XOR darbību bitu bitu pa diviem operandu atbilstošajiem bitiem. Ja atbilstošie biti ir vienādi , rezultāts ir 0
. Ja attiecīgie biti ir atšķirīgi , rezultāts ir 1
.
Ja operandi ir tipa bool
, bitu darbības XOR darbība ir ekvivalenta loģiskai XOR operācijai starp tām.
Piemēram,
14 = 00001110 (binārā) 11 = 00001011 (binārā)
Bitor XOR darbība starp 14 un 11:
00001110 00001011 -------- 00000101 = 5 (aiz komata)
Ja vēlaties uzzināt vairāk par Bitwise XOR lietošanu, apmeklējiet vietni The Magic of XOR
3. piemērs: Bitor 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); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
14 11 = 5
Bitwise papildinājums
Operatoru Bitwise Complement pārstāv ~
. Tas ir unikāls operators, ti, darbojas tikai vienā operandā. ~
Operators apgriež katru biti ti izdarīt izmaiņas 1-0 un 0 līdz 1.
Piemēram,
26 = 00011010 (binārā formātā)
Bitwise Complement darbība ar 26:
~ 00011010 = 11100101 = 229 (aiz komata)
4. piemērs: papildinājums pa bitiem
using System; namespace Operator ( class BitWiseComplement ( public static void Main(string() args) ( int number = 26, result; result = ~number; Console.WriteLine("~(0) = (1)", number, result); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
~ 26 = -27
Mēs saņēmām - 27
kā rezultātu, kad gaidījām 229
. Kāpēc tas notika?
Tas notiek tāpēc, ka binārā vērtība, 11100101
kuru mēs sagaidām, 229
faktiski ir 2 papildinājums -27
. Negatīvie skaitļi datorā tiek attēloti 2 papildinājumu attēlojumā.
Jebkuram veselam skaitlim n n
būs 2 papildinājums -(n+1)
.
Decimālskaitlis | Binārs | 2. papildinājums |
---|---|---|
0 | 00000000 | - (11111111 + 1) = -00000000 = -0 (aiz komata) |
1 | 00000001 | - (11111110 + 1) = -11111111 = -256 (aiz komata) |
229 | 11100101 | - (00011010 + 1) = -00011011 = -27 |
Pārpildes vērtības tiek ignorētas 2. papildinājumā.
Bitu bitu papildinājums 26
ir 229 (decimāldaļās) un 2 papildinājums 229
ir -27
. Tādējādi izeja ir -27
nevis 229
.
Pa kreisi Shift
Bitu kustības kreisās maiņas operatoru attēlo <<
. <<
Operators maiņās numuru pa kreisi ar noteiktu skaitu bitu. Nulles tiek pievienotas vismazāk nozīmīgajiem bitiem.
Pēc komata tas ir ekvivalents
num * 2biti
Piemēram,
42 = 101010 (binārā formātā)
Darbība ar bitu kustības maiņu uz 42:
42 << 1 = 84 (binārā 1010100) 42 << 2 = 168 (binārā 10101000) 42 << 4 = 672 (binārā 1010100000)
5. piemērs: Bitu pa kreisi nobīde
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); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
42 << 1 = 84 42 << 2 = 168 42 << 4 = 672
Pa labi pa labi
Bitu kustības kreisās maiņas operatoru attēlo >>
. >>
Operators maiņās numuru uz labo pusi ar noteiktu skaitu bitu. Pirmais operands tiek nobīdīts pa labi par otrā operanda norādīto bitu skaitu.
Pēc komata tas ir ekvivalents
stāvs (num / 2bits)
Piemēram,
42 = 101010 (binārā formātā)
Darbība ar bitu kustības maiņu uz 42:
42 >> 1 = 21 (binārā 010101) 42 >> 2 = 10 (binārā 001010) 42 >> 4 = 2 (binārā 000010)
6. piemērs: Bitu kustība pa labi
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); ) ) )
Kad mēs palaidīsim programmu, izeja būs:
42 >> 1 = 21 42 >> 2 = 10 42 >> 4 = 2