Hello Ananya, Bitwise operators are those operator which operates on Bits of one or multiple operands.
There are six different types of Bitwise Operators in C. These are:
The Bitwise AND (&) in C: The C compiler recognizes the Bitwise AND with & operator. It takes two operands and performs the AND operation for every bit of the two operand numbers. It is a binary operator. The output of this operator will result in 1 only if both bits are 1.
The Bitwise OR (|) in C: The C compiler recognizes the Bitwise OR with | operator. It takes two operands and performs the OR operation for every bit of the two operand numbers. It is also a binary operator. The output of this operator will result in 1 if any one of the two bits is 1.
The Bitwise XOR (^) in C: The C compiler recognizes the Bitwise XOR with ^ operator. It takes two operands and performs the XOR operation for every bit of the two operand numbers. It is also a binary operator. The output of this operator will result in 1 if both the bits have different values.
Binary One’s Complement or Bitwise NOT operator (~) in C: The C compiler recognizes the Bitwise NOT with ~ operator. It takes only one operand and performs the inversion of all digits of it. It is a unary operator. The output of this operator will invert all the existing bits of that operand.
Bitwise Left shift operator (<<) in C: The C compiler recognizes the left shift operation with this <<. It takes only two operands and shifts all the bits of the first operand to the left. The second operand decides how many numbers of places this operator will shift its bits. It is a binary operator.
Bitwise Right shift operator (>>) in C: The C compiler recognizes the left shift operation with this >>. It takes only two operands and shifts all the bits of the first operand to the right. The second operand decides how many numbers of places this operator will shift its bits. It is a binary operator.
Program for Bitwise Operator in C
Let us now take a look at the program using all the bitwise operators.
#include <stdio.h>
int main()
{
unsigned char x = 20, y = 21; // x = 20 (00010100), y = 21 (00010101)
int g = 0;
g = x & y; /* 20 = 010100 */
printf("The result of Bitwise AND is %d \n", g );
g = x | y; /* 21 = 010101 */
printf("The result of Bitwise OR is %d \n", g );
g = x ^ y; /* 1 = 0001 */
printf("The result of Bitwise XOR is %d \n", g );
g = ~x;
printf("The result of Bitwise NOT is %d \n", g );
g = x << 1;
printf(" The result of Bitwise Left Shift is %d \n", g );
g = x >> 1;
printf("The result of Bitwise Right Shift is %d \n", g );
return 0;
}
OUTPUT:
The result of Bitwise AND is 20
The result of Bitwise OR is 21
The result of Bitwise XOR is 1
The result of Bitwise NOT is -21
The result of Bitwise Left Shift is 40
The result of Bitwise Right Shift is 10