Ц # битовни оператори: И, ИЛИ, КСОР, допуњавање и померање

У овом упутству ћемо детаљно научити о битовима и операторима помака бита у Ц #. Ц # пружа 4 битна и 2 битна оператора померања.

Оператори бит-а и помака бита користе се за извођење операција нивоа бита на целобројним (инт, лонг итд.) И логичким подацима. Ови оператери се често не користе у стварним животним ситуацијама.

Ако сте заинтересовани да истражите више, посетите практичне примене битних операција.

Оператори битног помака и помака битова доступни у Ц # наведени су у наставку.

Списак битних оператора Ц #
Оператор Име оператора
~ Бит-ов комплемент
& У битовима И.
|. | У битовима ИЛИ
^ Битно ексклузивно ИЛИ (КСОР)
<< Преко левог померања
>> Промена удесно померање

У битовима ИЛИ

Битни ИЛИ оператор представља |. Изводи битовну ИЛИ операцију на одговарајућим битовима два операнда. Ако је било који од битова 1, резултат је 1. У супротном резултат је 0.

Ако су операнди типа bool, битна ИЛИ операција еквивалентна је логичкој ИЛИ операцији између њих.

На пример,

 14 = 00001110 (у бинарном) 11 = 00001011 (у бинарном)

Битни ORрад између 14 и 11:

 00001110 00001011 -------- 00001111 = 15 (у децималном облику)

Пример 1: Битно ИЛИ

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

Када покренемо програм, излаз ће бити:

14 | 11 = 15

У битовима И.

Битни оператор АНД представља &. Изводи битовну И операцију на одговарајућим битовима два операнда. Ако је било који од битова 0, резултат је 0. У супротном резултат је 1.

Ако су операнди типа bool, битна операција АНД једнака је логичкој операцији АНД између њих.

На пример,

 14 = 00001110 (у бинарном) 11 = 00001011 (у бинарном)

Битни И рад између 14 и 11:

 00001110 00001011 -------- 00001010 = 10 (у децималном облику)

Пример 2: Битни И

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

Када покренемо програм, излаз ће бити:

 14 и 11 = 10

Битно КСОР

Битни КСОР оператор је представљен са ^. Изводи битовну КСОР операцију на одговарајућим битовима два операнда. Ако су одговарајући битови исти , резултат је 0. Ако су одговарајући битови различити , резултат је 1.

Ако су операнди типа bool, битна КСОР операција је еквивалентна логичкој КСОР операцији између њих.

На пример,

 14 = 00001110 (у бинарном) 11 = 00001011 (у бинарном)

Битни КСОР рад између 14 и 11:

 00001110 00001011 -------- 00000101 = 5 (у децималном облику)

Ако желите више о употреби Битвисе КСОР, посетите Тхе Магиц оф КСОР

Пример 3: Битни КСОР

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

Када покренемо програм, излаз ће бити:

 14 11 = 5

Бит-ов комплемент

Оператор битног комплемента представљен је са ~. Унарни је оператор, тј. Оперише на само једном операнду. ~Оператер обрће сваки битова тј мијења 1 до 0 и 0 до 1.

На пример,

 26 = 00011010 (у бинарном облику)

Бит-операција комплемента на 26:

 ~ 00011010 = 11100101 = 229 (у децималном облику)

Пример 4: Битни комплемент

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

Када покренемо програм, излаз ће бити:

 ~ 26 = -27

Добили смо - 27као излаз кад смо очекивали 229. Зашто се ово догодило?

То се дешава зато што је бинарна вредност за 11100101коју очекујемо да 229је заправо представљање комплемента 2 -27. Негативни бројеви у рачунару су представљени у приказу комплемента 2.

За било који цео број н, допуна 2 nће бити -(n+1).

Допуна 2
Децималан Бинарно Допуна 2
0 00000000 - (11111111 + 1) = -00000000 = -0 (у децималном облику)
1 00000001 - (11111110 + 1) = -11111111 = -256 (у децималном облику)
229 11100101 - (00011010 + 1) = -00011011 = -27

Вредности преливања се занемарују у допуни 2.

Допунски додатак у вредности 26је 229 (у децималном облику), а додатак броја 2 229је -27. Отуда је излаз -27уместо 229.

Преко левог померања

Битни леви смена оператор је представљен са <<. <<Оператер помера број на лево од одређеног броја битова. Нумере се додају најмање значајним битовима.

У децималу је еквивалентан

 нум * 2битс

На пример,

 42 = 101010 (у бинарном формату)

Операција померања у битовном смеру на 42:

 42 << 1 = 84 (у бинарном 1010100) 42 << 2 = 168 (у бинарном 10101000) 42 << 4 = 672 (у бинарном 1010100000)

Пример 5: Померан леви помак

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

Када покренемо програм, излаз ће бити:

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

Промена удесно померање

Битни леви смена оператор је представљен са >>. >>Оператер помера број са десне стране одређеног броја битова. Први операнд је померен удесно за број битова наведен у другом операнду.

У децималу је еквивалентан

 спрат (број / 2 бита)

На пример,

 42 = 101010 (у бинарном формату)

Операција померања у битовном смеру на 42:

 42 >> 1 = 21 (у бинарном 010101) 42 >> 2 = 10 (у бинарном 001010) 42 >> 4 = 2 (у бинарном 000010)

Пример 6: Помицање удесно удесно

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

Када покренемо програм, излаз ће бити:

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

Занимљиви Чланци...