Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

Bitweise Operatoren in C:AND, OR, XOR, Shift &Complement

Was sind bitweise Operatoren?

Bitweise Operatoren werden zum Manipulieren von Daten auf Bitebene verwendet, was auch als Bitebenenprogrammierung bezeichnet wird. Bitwise arbeitet mit einem oder mehreren Bitmustern oder Binärzahlen auf der Ebene ihrer einzelnen Bits. Sie werden in numerischen Berechnungen verwendet, um den Berechnungsprozess zu beschleunigen.

Es folgt die Liste der bitweisen Operatoren, die von der Programmiersprache „C“ bereitgestellt werden:

Operator Bedeutung & Bitweiser UND-Operator| Bitweiser ODER-Operator^ Bitweiser exklusiver OR-Operator~ Der Komplementoperator von Binary One ist ein unärer Operator<< Linksverschiebungsoperator>> Rechtsverschiebungsoperator


Bitweise Operatoren können nicht direkt auf primitive Datentypen wie Float, Double usw. angewendet werden. Denken Sie immer daran, dass bitweise Operatoren wegen seiner Kompatibilität meistens mit dem Integer-Datentyp verwendet werden.

Die bitweisen logischen Operatoren bearbeiten die Daten Bit für Bit, beginnend mit dem niedrigstwertigen Bit, d. h. dem LSB-Bit, das das Bit ganz rechts ist, und arbeiten in Richtung des MSB (Most Significant Bit), das das Bit ganz links ist.

Das Ergebnis der Berechnung bitweiser logischer Operatoren ist in der untenstehenden Tabelle dargestellt.

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

In diesem Tutorial lernen Sie-

Bitweises UND

Dies ist einer der am häufigsten verwendeten logischen bitweisen Operatoren. Es wird durch ein einzelnes kaufmännisches Und-Zeichen (&) dargestellt. Auf jeder Seite des Operators (&) werden zwei ganzzahlige Ausdrücke geschrieben.
Das Ergebnis der bitweisen UND-Operation ist 1, wenn beide Bits den Wert 1 haben; andernfalls ist das Ergebnis immer 0.

Nehmen wir an, wir haben 2 Variablen op1 und op2 mit folgenden Werten:

Op1 = 0000 1101
Op2 = 0001 1001

Das Ergebnis der UND-Verknüpfung der Variablen op1 und op2 ist

Result = 0000 1001

Wie wir sehen können, werden zwei Variablen nach und nach verglichen. Immer wenn der Wert eines Bits in beiden Variablen 1 ist, dann ist das Ergebnis 1 oder 0.

Bitweises ODER

Es wird durch ein einzelnes vertikales Balkenzeichen (|) dargestellt. Auf jeder Seite des Operators (|) werden zwei Integer-Ausdrücke geschrieben.

Das Ergebnis der bitweisen ODER-Verknüpfung ist 1, wenn mindestens einer der Ausdrücke den Wert 1 hat; andernfalls ist das Ergebnis immer 0.

Nehmen wir an, wir haben 2 Variablen op1 und op2 mit folgenden Werten:

Op1 = 0000 1101
Op2 = 0001 1001

Das Ergebnis der ODER-Verknüpfung der Variablen op1 und op2 ist

Result = 0001 1101

Wie wir sehen können, werden zwei Variablen nach und nach verglichen. Immer wenn der Wert eines Bits in einer der Variablen 1 ist, dann ist das Ergebnis 1 oder 0.

Bitweises exklusives ODER

Es wird durch ein Symbol (^) dargestellt. Auf jeder Seite des Operators (^) werden zwei Integer-Ausdrücke geschrieben.

Das Ergebnis der bitweisen Exklusiv-ODER-Operation ist 1, wenn nur einer der Ausdrücke den Wert 1 hat; andernfalls ist das Ergebnis immer 0.

Nehmen wir an, wir haben 2 Variablen op1 und op2 mit folgenden Werten:

Op1 = 0000 1101
Op2 = 0001 1001

Das Ergebnis der XOR-Operation auf den Variablen op1 und op2 ist

Result = 0001 0100

Wie wir sehen können, werden zwei Variablen nach und nach verglichen. Immer wenn nur eine Variable den Wert 1 hat, ist das Ergebnis 0, sonst ist 0 das Ergebnis.

Lassen Sie uns ein einfaches Programm schreiben, das bitweise logische Operatoren demonstriert.

#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();
}

Ausgabe:

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

Bitweise Verschiebungsoperatoren

Die bitweisen Verschiebungsoperatoren werden verwendet, um die Bitmuster entweder auf die linke oder rechte Seite zu verschieben/verschieben. Links und rechts sind zwei Verschiebungsoperatoren, die von „C“ bereitgestellt werden und wie folgt dargestellt werden:

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

Hier,

Die Linksverschiebungsoperation verschiebt die Anzahl von 'n' Bits auf die linke Seite. Die Bits ganz links im Ausdruck werden ausgeblendet und n Bits mit dem Wert 0 werden auf der rechten Seite aufgefüllt.

Die Rechtsverschiebungsoperation verschiebt die n-Anzahl von Bits auf die rechte Seite. Die ganz rechten 'n' Bits im Ausdruck werden ausgeblendet und der Wert 0 wird auf der linken Seite ausgefüllt.

Beispiel:x ist ein ganzzahliger Ausdruck mit den Daten 1111. Nach der Durchführung einer Verschiebungsoperation lautet das Ergebnis:

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

Shifts-Operatoren können kombiniert werden, dann können sie verwendet werden, um die Daten aus dem Integer-Ausdruck zu extrahieren. Lassen Sie uns ein Programm schreiben, um die Verwendung von bitweisen Verschiebungsoperatoren zu demonstrieren.

#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;
}

Ausgabe:

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

Nach der Durchführung der Verschiebung nach links wird der Wert 80, dessen binäres Äquivalent 101000 ist.

Nach der Rechtsverschiebung wird der Wert 5, dessen binäres Äquivalent 000101 ist.

Bitweiser Komplementoperator

Das bitweise Komplement wird auch als Einerkomplement-Operator bezeichnet, da es immer nur einen Wert oder einen Operanden akzeptiert. Es ist ein unärer Operator.

Wenn wir Komplemente an beliebigen Bits durchführen, werden alle Einsen zu Nullen und umgekehrt.

Wenn wir einen ganzzahligen Ausdruck haben, der 0000 1111 enthält, wird der Wert nach der bitweisen Komplementoperation 1111 0000.

Der bitweise Komplementoperator wird durch das Symbol Tilde (~) gekennzeichnet.

Lassen Sie uns ein Programm schreiben, das die Implementierung des bitweisen Komplementoperators demonstriert.

#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;
}

Ausgabe:

Complement - Value of c is -11

Hier ist ein weiteres Programm, mit einem Beispiel aller bisher besprochenen Operatoes:

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

Nachdem wir das Programm kompiliert und ausgeführt haben, erzeugt es das folgende Ergebnis:

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

Zusammenfassung


C Sprache

  1. C#-Klasse und -Objekt
  2. Abstrakte C#-Klasse und -Methode
  3. C# Teilklasse und Teilmethode
  4. Versiegelte C#-Klasse und -Methode
  5. C++-Operatoren
  6. C Schlüsselwörter und Bezeichner
  7. C-Programmieroperatoren
  8. IoT und Blockchain – Ein Paradigmenwechsel
  9. Operatoren in C++ mit Beispiel:Was ist, Typen und Programme
  10. Python-Operatoren:Arithmetik, Logisch, Vergleich, Zuweisung, Bitweise und Vorrang