Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Bitsgewijze operators in C:AND, OR, XOR, Shift &Complement

Wat zijn Bitwise-operators?

Bitwise-operators worden gebruikt voor het manipuleren van gegevens op bitniveau, ook wel programmeren op bitniveau genoemd. Bitwise werkt op een of meer bitpatronen of binaire cijfers op het niveau van hun individuele bits. Ze worden gebruikt in numerieke berekeningen om het rekenproces sneller te maken.

Hieronder volgt de lijst met bitsgewijze operatoren geleverd door de programmeertaal 'C':

Operator Betekenis & Bitsgewijze AND-operator| Bitsgewijze OR-operator^ Bitwise exclusieve OR-operator~ De complement-operator van Binary One is een unaire operator<< Operator met linkerploeg>> Rechter shift operator


Bitsgewijze operatoren kunnen niet rechtstreeks worden toegepast op primitieve gegevenstypes zoals float, double, enz. Onthoud altijd één ding dat bitsgewijze operatoren meestal worden gebruikt met het gegevenstype integer vanwege de compatibiliteit ervan.

De bitsgewijze logische operatoren werken bit voor bit aan de gegevens, beginnend bij het minst significante bit, d.w.z. LSB-bit dat het meest rechtse bit is, en werken naar de MSB (Most Significant Bit) toe, dat het meest linkse bit is.

Het resultaat van de berekening van bitsgewijze logische operatoren wordt getoond in de onderstaande tabel.

x j x &y x | j x ^ y 0 00000 10111 00111 1110

In deze tutorial leer je-

  • Wat zijn Bitwise-operators?
  • Bitgewijs EN
  • Bitgewijs OF
  • Exclusief Bitwise OF
  • Bitwise shift-operators
  • Bitsgewijze complement-operator

Bitsgewijze EN

Dit is een van de meest gebruikte logische bitsgewijze operatoren. Het wordt weergegeven door een enkel ampersand-teken (&). Twee gehele uitdrukkingen worden geschreven aan elke kant van de (&) operator.
Het resultaat van de bitsgewijze AND-bewerking is 1 als beide bits de waarde 1 hebben; anders is het resultaat altijd 0.

Laten we aannemen dat we 2 variabelen op1 en op2 hebben met de volgende waarden:

Op1 = 0000 1101
Op2 = 0001 1001

Het resultaat van de AND-bewerking op variabelen op1 en op2 is

Result = 0000 1001

Zoals we kunnen zien, worden twee variabelen beetje bij beetje vergeleken. Wanneer de waarde van een bit in beide variabelen 1 is, dan is het resultaat 1 of anders 0.

Bitsgewijze OF

Het wordt weergegeven door een enkel verticaal balkteken (|). Aan weerszijden van de operator (|) worden twee gehele uitdrukkingen geschreven.

Het resultaat van de bitsgewijze OF-bewerking is 1 als ten minste één van de expressies de waarde 1 heeft; anders is het resultaat altijd 0.

Laten we aannemen dat we 2 variabelen op1 en op2 hebben met de volgende waarden:

Op1 = 0000 1101
Op2 = 0001 1001

Het resultaat van de OR-bewerking op de variabelen op1 en op2 is

Result = 0001 1101

Zoals we kunnen zien, worden twee variabelen beetje bij beetje vergeleken. Wanneer de waarde van een bit in een van de variabelen 1 is, dan is het resultaat 1 of anders 0.

Exclusief Bitwise OF

Het wordt weergegeven door een symbool (^). Aan weerszijden van de operator (^) worden twee gehele uitdrukkingen geschreven.

Het resultaat van de bitsgewijze Exclusive-OR-bewerking is 1 als slechts één van de expressies de waarde 1 heeft; anders is het resultaat altijd 0.

Laten we aannemen dat we 2 variabelen op1 en op2 hebben met de volgende waarden:

Op1 = 0000 1101
Op2 = 0001 1001

Het resultaat van de XOR-bewerking op variabelen op1 en op2 zal zijn

Result = 0001 0100

Zoals we kunnen zien, worden twee variabelen beetje bij beetje vergeleken. Wanneer slechts één variabele de waarde 1 heeft, is het resultaat 0, anders is 0 het resultaat.

Laten we een eenvoudig programma schrijven dat bitsgewijze logische operatoren demonstreert.

#include <stdio.h>
int main() 
{
	int a = 20;	/* 20 = 010100 */  
    int b = 21;	/* 21 = 010101 */
   	int c = 0;           

   	c = a & b;       /* 20 = 010100 */ 
   	printf("AND - Value of c is %d\n", c );

   	c = a | b;       /* 21 = 010101 */
   	printf("OR - Value of c is %d\n", c );

   	c = a ^ b;       /* 1 = 0001 */
   	printf("Exclusive-OR - Value of c is %d\n", c );

   	getch();
}

Uitgang:

AND - Value of c is 20
OR - Value of c is 21
Exclusive-OR - Value of c is 1

Bitsgewijze shift-operators

De bitsgewijze shift-operators worden gebruikt om de bitpatronen naar links of naar rechts te verplaatsen/verschuiven. Links en rechts zijn twee ploegendiensten geleverd door 'C' die als volgt worden weergegeven:

Operand << n (Left Shift)
Operand >> n (Right Shift)

Hier,

  • een operand is een integer-expressie waarop we de shift-bewerking moeten uitvoeren.
  • 'n' is het totale aantal bitposities dat we moeten verschuiven in de integer-uitdrukking.

De linker shift-bewerking verschuift het 'n' aantal bits naar de linkerkant. De meest linkse bits in de uitdrukking worden uitgeklapt en n bits met de waarde 0 worden aan de rechterkant gevuld.

De rechter shift-bewerking verschuift het 'n' aantal bits naar de rechterkant. De meest rechtse 'n'-bits in de uitdrukking worden uitgeklapt en de waarde 0 wordt aan de linkerkant ingevuld.

Voorbeeld:x is een geheel getal met data 1111. Na het uitvoeren van de shift-bewerking is het resultaat:

x << 2 (left shift) = 1111<<2 = 1100
x>>2 (right shift) = 1111>>2 = 0011

Verschuivingsoperatoren kunnen worden gecombineerd en vervolgens worden gebruikt om de gegevens uit de integer-uitdrukking te extraheren. Laten we een programma schrijven om het gebruik van bitsgewijze shift-operators te demonstreren.

#include <stdio.h>
int main() {
   int a = 20;	/* 20 = 010100 */  
   int c = 0;           

   c = a << 2;	/* 80 = 101000 */
   printf("Left shift - Value of c is %d\n", c );

   c = a >> 2;	/*05 = 000101 */
   printf("Right shift - Value of c is %d\n", c );
   return 0;
}

Uitgang:

Left shift - Value of c is 80
Right shift - Value of c is 5

Na het uitvoeren van de linker shift-bewerking wordt de waarde 80 waarvan het binaire equivalent 101000 is.

Na het uitvoeren van de rechter shift-bewerking, wordt de waarde 5 waarvan het binaire equivalent 000101 is.

Bitsgewijze complement-operator

Het bitsgewijze complement wordt ook wel iemands complement-operator genoemd, omdat er altijd maar één waarde of een operand voor nodig is. Het is een unaire operator.

Als we complement op bits uitvoeren, worden alle enen nullen en vice versa.

Als we een integer-uitdrukking hebben die 0000 1111 bevat, wordt de waarde na het uitvoeren van de bitsgewijze complement-bewerking 1111 0000.

Bitsgewijze complement-operator wordt aangeduid met symbool tilde (~).

Laten we een programma schrijven dat de implementatie van de bitsgewijze complement-operator demonstreert.

#include <stdio.h>
int main() {
   int a = 10;	/* 10 = 1010 */  
   int c = 0;           
   c = ~(a);      
   printf("Complement - Value of c is %d\n", c );
   return 0;
}

Uitgang:

Complement - Value of c is -11

Hier is nog een programma, met een voorbeeld van alle tot nu toe besproken operato's:

#include <stdio.h>
main() {
   unsigned int x = 48;	/* 48 = 0011 0000 */  
   unsigned int y = 13;	/* 13 = 0000 1101 */
   int z = 0;           

   z =x & y;       /* 0 = 0000 0000 */ 
   printf("Bitwise AND Operator - x & y = %d\n", z );

   z = x | y;       /* 61 = 0011 1101 */
   printf("Bitwise OR Operator - x | y = %d\n", z );

   z= x^y;       /* 61 = 0011 1101 */
   printf("Bitwise XOR Operator- x^y= %d\n", z);

   z = ~x;          /*-49 = 11001111 */
   printf("Bitwise One's Complement Operator - ~x = %d\n", z);

   z = x << 2;     /* 192 = 1100 0000 */
   printf("Bitwise Left Shift Operator x << 2= %d\n", z );

   z= x >> 2;     /* 12 = 0000 1100 */
   printf ("Bitwise Right Shift Operator x >> 2= %d\n", z );}

Nadat we het programma hebben gecompileerd en uitgevoerd, levert het het volgende resultaat op:

Bitwise AND Operator - x & y = 0
Bitwise OR Operator - x | y = 61
Bitwise XOR Operator- x^y= 61
Bitwise One's Complement Operator - ~x = -49
Bitwise Left Shift Operator x << 2= 192
Bitwise Right Shift Operator x >> 2= 12

Samenvatting

  • Bitwise-operators zijn speciale operatoren die worden geleverd door 'C.'
  • Ze worden gebruikt bij het programmeren op bitniveau.
  • Deze operators worden gebruikt om bits van een integer-expressie te manipuleren.
  • Logisch, shift en complement zijn drie soorten bitsgewijze operatoren.
  • De bitsgewijze complement-operator wordt gebruikt om de bits van een uitdrukking om te keren.

C Taal

  1. C# klasse en object
  2. C# abstracte klasse en methode
  3. C# Gedeeltelijke klasse en gedeeltelijke methode
  4. C# verzegelde klasse en methode
  5. C++-operators
  6. C Trefwoorden en ID's
  7. C Programmeren van operators
  8. IoT en blockchain – Een paradigmaverschuiving
  9. Operators in C++ met voorbeeld:wat is, typen en programma's
  10. Python-operators:rekenkundig, logisch, vergelijking, toewijzing, bitsgewijze en prioriteit
  11. C - Constanten en Letters