# Bitwise Operators in C or C++

In this tutorial, we will learn about **Bitwise Operators in C or C++**.

## Bitwise Operators in C or C++

Bit manipulation means to algorithmically make changes in the bits of literals. The operators we use to do these manipulations are called **Bitwise Operators**. In C/C++, we have six types of bitwise operators, namely **bitwise AND** (**&**), **bitwise OR** (**|**), **bitwise NOT** (**~**), **bitwise XOR** (**^**), **left shift** (**<<**) and **right shift** (**>>**).

### Bitwise AND (&) Operator

It takes two numbers as operands and does AND operation on every bit of two numbers. The result of AND is 1 only if both bits are 1.

X |
Y |
X & Y |
---|---|---|

0 | 0 | 0 |

0 | 1 | 0 |

1 | 0 | 0 |

1 | 1 | 1 |

### Program to show Bitwise AND Operator in C++

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int bit(int c) //to convert into binary number { int r, b = 0, i = 0; while (c != 0) { r = c % 2; c = c / 2; b += r * pow(10,i); i++; } return b; } int main() { int a = 2, b = 7, c; cout << "a = 2 \t a = 0010\n"; cout << "b = 7 \t b = 0111\n"; c = a & b; //bitwise operation cout << "c = " << c ; int d = bit(c); cout << "\t c = " <<setfill('0')<<setw(4)<< d; //to set the width return 0; }

Output :

a = 2 a = 0010 b = 7 b = 0111 c = 2 c = 0010

### Bitwise OR (|) Operator in C++

It takes two numbers as operands and does OR operation on every bit of two numbers. The result of OR is 1 if any of the two bits is 1.

X | Y | X | Y |
---|---|---|

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 1 |

### Program to show Bitwise OR

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int bit(int c) //to convert into binary number { int r, b = 0, i = 0; while (c != 0) { r = c % 2; c = c / 2; b += r * pow(10,i); i++; } return b; } int main() { int a = 2, b = 7, c; cout << "a = 2 \t a = 0010\n"; cout << "b = 7 \t b = 0111\n"; c = a | b; //bitwise operation cout << "c = " << c ; int d = bit(c); cout << "\t c = " <<setfill('0')<<setw(4)<< d; //to set the width return 0; }

Output :

a = 2 a = 0010 b = 7 b = 0111 c = 7 c = 0111

## Bitwise NOT (~)

It takes one number and inverts all bits of it. That is if the bit reads 0, it inverts it to 1. Similarly, it inverts 1 to 0. Here, we have the table depicting the NOT operator.

X | ~X |
---|---|

1 | 0 |

0 | 1 |

### Program to show Bitwise NOT

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int main() { int a = 2, c; cout << "a = 2\n"; // 2 = 0010 c = ~a; //bitwise operation cout << "c = " << c ; //~a = -3 = 1101 return 0; }

Output :

a = 2 c = -3

## Bitwise XOR (^)

It takes two numbers as operands and does XOR operation on every bit of two numbers. The result of XOR is 1 if the two bits are different.

X | Y | X ^ Y |
---|---|---|

0 | 0 | 0 |

0 | 1 | 1 |

1 | 0 | 1 |

1 | 1 | 0 |

### Program to show Bitwise XOR

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int bit(int c) //to convert into binary number { int r, b = 0, i = 0; while (c != 0) { r = c % 2; c = c / 2; b += r * pow(10,i); i++; } return b; } int main() { int a = 2, b = 7, c; cout << "a = 2 \t a = 0010\n"; cout << "b = 7 \t b = 0111\n"; c = a ^ b; //bitwise operation cout << "c = " << c ; int d = bit(c); cout << "\t c = " <<setfill('0')<<setw(4)<< d; //to set the width return 0; }

Output :

a = 2 a = 0010 b = 7 b = 0111 c = 5 c = 0101

### Left shift (<<) Operator in C++

It takes two numbers, left shifts the bits of the first operand, the second operand decides the number of places to shift. Here, we have the table depicting the* left shift* operator.

X |
0 | 0 | 1 | 0 |

X<<1 |
0 | 1 | 0 | 0 |

### Program to show left shift in C++

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int bit(int c) //to convert into binary number { int r, b = 0, i = 0; while (c != 0) { r = c % 2; c = c / 2; b += r * pow(10,i); i++; } return b; } int main() { int a = 2, c; cout << "a = 2 \t a = 0010\n"; c = a<<1; //bitwise operation cout << "c = " << c ; int d = bit(c); cout << "\t c = " <<setfill('0')<<setw(4)<< d; //to set the width return 0; }

Output :

a = 2 a = 0010 c = 4 c = 0100

### Right shift(>>) Operator in C++

It takes two numbers, right shifts the bits of the first operand, the second operand decides the number of places to shift. Here, we have the table depicting the* right shift* operator.

X |
0 | 0 | 1 | 0 |

X>>1 |
0 | 0 | 0 | 1 |

### Program to show right shift in C++

# include <iostream> #include <math.h> #include <iomanip> using namespace std; int bit(int c) //to convert into binary number { int r, b = 0, i = 0; while (c != 0) { r = c % 2; c = c / 2; b += r * pow(10,i); i++; } return b; } int main() { int a = 2, c; cout << "a = 2 \t a = 0010\n"; c = a>>1; //bitwise operation cout << "c = " << c ; int d = bit(c); cout << "\t c = " <<setfill('0')<<setw(4)<< d; //to set the width return 0; }

Output :

a = 2 a = 0010 c = 1 c = 0001

Hope this was helpful. Enjoy Coding!

Also learn:

Taking only integer input in C++

## Leave a Reply