C # Operatoriai bitais: AND, OR, XOR, papildymo ir perjungimo operacijos

Šioje pamokoje mes išsamiai sužinosime apie bitų ir bitų poslinkio operatorius C #. C # teikia 4 bitų ir 2 bitų poslinkio operatorius.

„Bitwise“ ir „bit shift“ operatoriai naudojami bitų lygio operacijoms atlikti su sveikaisiais skaičiais (int, long ir kt.) Ir loginiais duomenimis. Šie operatoriai nėra naudojami realiose situacijose.

Jei norite sužinoti daugiau, apsilankykite praktinėse bitų operacijų programose.

Žemiau pateikiami C # galimi bitų ir bitų poslinkio operatoriai.

Operatorių C # bitų sąrašas
operatorius Operatoriaus vardas
~ Bitų papildymas
& Bitais IR
| ARBA bitais
^ Išskirtinis bitų atžvilgiu ARBA (XOR)
<< Kairysis kairysis poslinkis
>> Dešiniuoju poslinkiu į dešinę

ARBA bitais

ARBA operatorių bitų pavidalu žymi |. Jis atlieka atitinkamą dviejų operandų bitų ARBA operaciją. Jei kuris nors iš bitų yra 1, rezultatas yra 1. Priešingu atveju rezultatas yra 0.

Jei operandai yra tipo bool, operacija bitais ARBA prilygsta loginei ARBA operacijai tarp jų.

Pavyzdžiui,

 14 = 00001110 (dvejetainiu) 11 = 00001011 (dvejetainiu)

ORVeikimas greičiu tarp 14 ir 11:

 00001110 00001011 -------- 00001111 = 15 (dešimtųjų tikslumu)

1 pavyzdys

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

Kai vykdysime programą, išvestis bus:

14 | 11 = 15

Bitais IR

Operatorių „Bitwise“ ir „AND“ atstovauja &. Jis atlieka IR operaciją atitinkamais dviejų operandų bitais. Jei kuris nors iš bitų yra 0, rezultatas yra 0. Priešingu atveju rezultatas yra 1.

Jei operandai yra tipo bool, operacija „bitai AND“ yra lygi loginei „AND“ operacijai tarp jų.

Pavyzdžiui,

 14 = 00001110 (dvejetainiu) 11 = 00001011 (dvejetainiu)

Veikimas pagal bitą ir nuo 14 iki 11:

 00001110 00001011 -------- 00001010 = 10 (dešimtųjų tikslumu)

2 pavyzdys

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

Kai vykdysime programą, išvestis bus:

 14 ir 11 = 10

Bitais XOR

Operatorių „Bitwise XOR“ atstovauja ^. Jis atlieka XOR operaciją bitų kaupimu atitinkamais dviejų operandų bitais. Jei atitinkami bitai yra vienodi , rezultatas yra 0. Jei atitinkami bitai yra skirtingi , rezultatas yra 1.

Jei operandai yra tipo bool, bitų XOR operacija prilygsta loginei XOR operacijai tarp jų.

Pavyzdžiui,

 14 = 00001110 (dvejetainiu) 11 = 00001011 (dvejetainiu)

XOR operacija bitų pavidalu tarp 14 ir 11:

 00001110 00001011 -------- 00000101 = 5 (dešimtųjų tikslumu)

Jei norite sužinoti daugiau apie „Bitwise XOR“ naudojimą, apsilankykite „The Magic of XOR“

3 pavyzdys: XOR bitais

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

Kai vykdysime programą, išvestis bus:

 14 11 = 5

Bitų papildymas

Bitwise Complement operator is represented by ~. It is a unary operator, i.e. operates on only one operand. The ~ operator inverts each bits i.e. changes 1 to 0 and 0 to 1.

For Example,

 26 = 00011010 (In Binary)

Bitwise Complement operation on 26:

 ~ 00011010 = 11100101 = 229 (In Decimal)

Example 4: Bitwise Complement

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

When we run the program, the output will be:

 ~26 = -27

We got -27 as output when we were expecting 229. Why did this happen?

It happens because the binary value 11100101 which we expect to be 229 is actually a 2's complement representation of -27. Negative numbers in computer are represented in 2's complement representation.

For any integer n, 2's complement of n will be -(n+1).

2 papildymas
Dešimtainis skaičius Dvejetainis 2 papildymas
0 00000000 - (11111111 + 1) = -00000000 = -0 (dešimtųjų tikslumu)
1 00000001 - (11111110 + 1) = -11111111 = -256 (dešimtųjų tikslumu)
229 11100101 - (00011010 + 1) = -00011011 = -27

2 papildyme nepaisoma perpildymo reikšmių.

Bitinis komplementas 26yra 229 (dešimtainis), o 2 komplementas 229yra -27. Taigi išvestis yra -27vietoj 229.

Kairysis kairysis poslinkis

Kairėje kairėje poslinkio operatorių žymi <<. <<Operatorius pamainomis numerį palikti tam tikrą skaičių bitai. Nuliai pridedami prie mažiausiai reikšmingų bitų.

Dešimtainiu skaičiumi jis prilygsta

 skaičius * 2 bitai

Pavyzdžiui,

 42 = 101010 (dvejetainiai)

„Bitwise Lift Shift“ operacija 42:

 42 << 1 = 84 (Dvejetainiu 1010100) 42 << 2 = 168 (Dvejetainiu 10101000) 42 << 4 = 672 (Dvejetainiu 1010100000)

5 pavyzdys: kairėn kairėn poslinkis

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

Kai vykdysime programą, išvestis bus:

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

Dešiniuoju poslinkiu į dešinę

Kairėje kairėje poslinkio operatorių žymi >>. >>Operatorius pamainomis skaičių į dešinę pagal tikrą skaičių bitai. Pirmasis operandas perkeliamas į dešinę pagal antrojo operando nurodytą bitų skaičių.

Dešimtainiu skaičiumi jis prilygsta

 aukštas (skaičius / 2 bitai)

Pavyzdžiui,

 42 = 101010 (dvejetainiai)

„Bitwise Lift Shift“ operacija 42:

 42 >> 1 = 21 (dvejetainiu 010101) 42 >> 2 = 10 (dvejetainiu 001010) 42 >> 4 = 2 (dvejetainiu 000010)

6 pavyzdys: Dešiniuoju poslinkiu dešinėn

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

Kai vykdysime programą, išvestis bus:

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

Įdomios straipsniai...