Š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šasoperatorius | 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)
OR
Veikimas 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)
.
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 26
yra 229 (dešimtainis), o 2 komplementas 229
yra -27
. Taigi išvestis yra -27
vietoj 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