C Operatoriai bitų pavidalu: AND, OR, XOR, papildymo ir keitimo operacijos

Šioje pamokoje sužinosite apie visus 6 bitų operatorius C programavimo srityje su pavyzdžiais.

Aritmetiniame-loginiame vienete (kuris yra procesoriaus viduje) matematinės operacijos, tokios kaip: susiejimas, atimimas, dauginimas ir dalijimas, atliekamos bitų lygiu. Norėdami atlikti bitų lygio operacijas programuodami C, naudojami bitų operatoriai.

Operatoriai Operatorių reikšmė
& Bitais IR
| ARBA bitais
^ Bitais XOR
~ Bitais papildo
<< Paspauskite kairę
>> Pereiti į dešinę

Operatyviai ir

AND bitų išvestis yra 1, jei atitinkami dviejų operandų bitai yra 1. Jei bet kuris operando bitas yra 0, atitinkamo bito rezultatas įvertinamas iki 0.

Tarkime, kad dviejų sveikųjų skaičių 12 ir 25 duomenys bus veikiami bitais IR

 12 = 00001100 (dvejetainiu būdu) 25 = 00011001 (dvejetainiu) 12 ir 25 bitų veikimas 00001100 ir 00011001 ________ 00001000 = 8 (dešimtainiu skaičiumi)

1 pavyzdys: Bitais IR

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a&b); return 0; ) 

Rezultatas

 Išvestis = 8

ARBA operatorius bitais

OR bitų išvestis yra 1, jei bent vienas atitinkamas dviejų operandų bitas yra 1. C programavimo operacijoje bitų kryptimi OR žymimas |

12 = 00001100 (dvejetainiu būdu) 25 = 00011001 (dvejetainiu būdu) Bitais ARBA 12 ir 25 operacijos 00001100 | 00011001 ________ 00011101 = 29 (dešimtųjų tikslumu)

2 pavyzdys: Bitais OR

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a|b); return 0; ) 

Rezultatas

 Rezultatas = 29

XOR (išskirtinis ARBA) operatorius bitų pavidalu ^

XOR operatoriaus bitų rezultatas yra 1, jei atitinkami dviejų operandų bitai yra priešingi. Tai žymima ^.

 12 = 00001100 (dvejetainiu būdu) 25 = 00011001 (dvejetainiu) 12 ir 25 operacijos bitais XOR 00001100 00011001 ________ 00010101 = 21 (dešimtųjų tikslumu)

3 pavyzdys: XOR bitais

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a^b); return 0; )

Rezultatas

 Rezultatas = 21

Bitais papildo operatorių ~

„Bitwise“ komplimentų operatorius yra vienarūšis operatorius (veikia tik su vienu operandu). Jis keičiamas nuo 1 iki 0, o nuo 0 iki 1. Jis žymimas ~.

 35 = 00100011 (dvejetainiu skaičiumi) Papildoma 35 ~ 00100011 operacija _ ~ ____ 11011100 = 220 (dešimtųjų tikslumu) 

„C“ programavimo sistemoje susukite bitų papildymo operatorių

35 (~ 35) bitų papildymas yra -36, o ne 220, bet kodėl?

Bet kuriam sveikam skaičiui n bus n papildinys bitais -(n+1). Norėdami tai suprasti, turėtumėte žinoti apie 2 papildymą.

2 papildymas

Two's complement is an operation on binary numbers. The 2's complement of a number is equal to the complement of that number plus 1. For example:

 Decimal Binary 2's complement 0 00000000 -(11111111+1) = -00000000 = -0(decimal) 1 00000001 -(11111110+1) = -11111111 = -256(decimal) 12 00001100 -(11110011+1) = -11110100 = -244(decimal) 220 11011100 -(00100011+1) = -00100100 = -36(decimal) Note: Overflow is ignored while computing 2's complement. 

The bitwise complement of 35 is 220 (in decimal). The 2's complement of 220 is -36. Hence, the output is -36 instead of 220.

Bitwise complement of any number N is -(N+1). Here's how:

 bitwise complement of N = ~N (represented in 2's complement form) 2'complement of ~N= -(~(~N)+1) = -(N+1) 

Example #4: Bitwise complement

 #include int main() ( printf("Output = %d",~35); printf("Output = %d",~-12); return 0; ) 

Output

 Output = -36 Output = 11

Shift Operators in C programming

There are two shift operators in C programming:

  • Right shift operator
  • Left shift operator.

Right Shift Operator

Right shift operator shifts all bits towards right by certain number of specified bits. It is denoted by>>.

 212 = 11010100 (In binary) 212>>2 = 00110101 (In binary) (Right shift by two bits) 212>>7 = 00000001 (In binary) 212>>8 = 00000000 212>>0 = 11010100 (No Shift) 

Left Shift Operator

Left shift operator shifts all bits towards left by a certain number of specified bits. The bit positions that have been vacated by the left shift operator are filled with 0. The symbol of the left shift operator is <<.

 212 = 11010100 (In binary) 212<<1 = 110101000 (In binary) (Left shift by one bit) 212<<0 = 11010100 (Shift by 0) 212<<4 = 110101000000 (In binary) =3392(In decimal)

Example #5: Shift Operators

 #include int main() ( int num=212, i; for (i=0; i>i); printf(""); for (i=0; i<=2; ++i) printf("Left shift by %d: %d", i, num< 
 Right Shift by 0: 212 Right Shift by 1: 106 Right Shift by 2: 53 Left Shift by 0: 212 Left Shift by 1: 424 Left Shift by 2: 848 

Įdomios straipsniai...