C programming language provides various operators like Arithmetic, Logical, Conditional and Bitwise operators. Bitwise operators deal with Bits of data instead of Bytes of data.
Bitwise Operators in C
There are six Bitwise Operators in C.
- ~ TILDE
- << Left Shift
- >> Right Shift
- & Bitwise AND
- | Bitwise OR
- ^ Bitwise XOR ( Exclusive OR)
1. TILDE ~ Operator
TILDE ~ Operator is also called Bitwise One's Complement Operator. 1's complement operator simply replaces 1s with 0s and 0s with 1s.
Op1 | Result |
---|---|
0 | 1 |
1 | 0 |
//Binary of number 6 = 0110 int a= 6; printf("%d %d", a, ~a); //0110 -> 1001 //OUTPUT: 6 9
2. << Left Shift Operator
Left Shift operator shifts bits of a number from Right to Left. Gaps created on the Right side are filled with Zeroes. Bits on the left side are removed. So, <<N removes N bits on the left side.
//Binary of number 6 = 0110 int a = 6; printf("%d %d", a, a<<2); //Two Zeroes are filled right side. // 0110 -> 1000 //OUTPUT: 6 8
3. >> Right Shift Operator
Right Shift operator shifts bits of a number from Left to Right. Gaps created on the Left side are filled with Zeroes. Bits on the Right side are removed. So, >>N removes N bits on the Right side.
//Binary of number 6 = 0110 int a = 6; printf("%d %d", a, a>>2); //Two Zeroes are filled left side. // 0110 -> 0001 //OUTPUT: 6 1
4. & Bitwise AND Operator
Bitwise AND Operator & multiplies bit by bit. So 1 multiplied by 1 gives 0. Anything Multiplied by 0 gives 0.
Op1 | Op2 | Result |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
//Binary of number 6 = 0110 //Binary of number 3 = 0011 int a = 6, b=3; printf("%d", a & b); //0010 //OUTPUT: 2
5. | Bitwise OR Operator
Bitwise OR Operator | gives a result of 1 if at least one input or operand is 1.
Op1 | Op2 | Result |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
//Binary of number 6 = 0110 //Binary of number 3 = 0011 int a = 6, b=3; printf("%d", a | b); //0111 //OUTPUT: 7
6. ^ Bitwise Exclusive OR
Bitwise XOR Operator or Exclusive OR operator gives an output of 1 if two operands are different. That means, only 0 and 1 combination gives output as ONE.
Op1 | Op2 | Result |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
//Binary of number 6 = 0110 //Binary of number 3 = 0011 int a = 6, b=3; printf("%d", a | b); //0101 //OUTPUT: 5
C Bitwise Operators Examples Table
NO | Operator | Expression | Result |
---|---|---|---|
1 | ~ | ~1010 | 0101 |
2 | & | 1010 & 0011 | 0010 |
3 | | | 1010 | 0011 | 1111 |
4 | << | 1010 << 2 | 1000 |
5 | >> | 1101 >> 2 | 0011 |
6 | ^ | 1010 ^ 0010 | 1000 |
C Online Test on Bitwise Operators
1 | C Programming Bitwise Operators Online Test 1 |