Selected Reading

C++ Bitset::operator^ Function



The C++ function std::bitset::operator^ performs bitwise XOR operation on the current bitset object. It stores the result in another (new) bitset object.

The bitwise XOR operator is a binary operator that performs a bitwise XOR operation between the bits of two operands. It returns a value where each bit is set to 1 if the corresponding bits of the operands are different (i.e., one bit is 0 and the other is 1), and a 0 where the corresponding bits are the same.

A bitwise operator operates on individual bits of a binary number, rather than the whole number. It can be used to perform different operations, such as setting and clearing specific bits, checking if a bit is set or not, and manipulating data packed into bit fields.

Syntax

Following is the syntax for std::bitset::operator^ −

template<size_t N>
bitset<N> operator^ (const bitset<N>& first, const bitset<N>& second);

Parameters

  • first − First bitset object.
  • second − Second bitset object.

Return value

Returns bitset which contains result of bitwise XOR operation.

Example 1

The following example shows the usage of std::bitset::operator^ using two bitsets of the same size.

Here, we are creating two bitsets "b" and "mask" with "4" bits each, setting "b" to the binary value "1010", and "mask" to the binary value "1111". Then, we are performing a bitwise XOR operation between them and storing the result in a new variable "result".

#include <iostream>
#include <bitset>
using namespace std;

int main(void) {
   bitset<4> b("1010");
   bitset<4> mask("1111");
   /* Invert each bit of bitset b */
   bitset<4> result = b ^ mask;
   cout << result << endl;
   return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

0101

Example 2

Here, we are using a bitset and an integer to perform a bitwise XOR operation.

In the following example, we are creating a bitset "bits" of size "8" with the binary value "11001100", and an integer "num" with the binary value "00111010". Then, we are performing bitwise XOR operation and storing the resultant bits in "result".

#include <iostream>
#include <bitset>
using namespace std;

int main(void) {
   bitset<8> bits("11001100");
   int num = 0b00111010;
   bitset<8> result = bits ^ bitset<8>(num);
   cout << result << endl;
   return 0;
}

Output

If we run the above code it will generate the following output −

11110110

Example 3

Now, we are trying to perform a bitwise XOR operation on the bitset with itself. We are creating a bitset "bits" of size "3" with the binary value "110". Then, we are performing bitwise XOR operation and storing the result in "bits".

#include <iostream>
#include <bitset>
using namespace std;

int main(void) {
   bitset<3> bits("110");
   bits = bits ^ bits;
   cout << bits << endl;  
   return 0;
}

Output

Following is the output of the above code −

000

Example 4

In here, we are using multiple (chaining) bitwise XOR operations.

In the following example, we are creating three bitsets "a", "b", and "c" with binary values "1010", "0111", and "1011" respectively. Then, we are using the bitwise XOR operator to first perform a bitwise XOR operation between "b" and "c", and then between the resultant value and "a". The binary value of both "a" and "b" is modified during this process.

#include <iostream>
#include <bitset>
using namespace std;

int main() {
   bitset<4> a("1010");
   bitset<4> b("0111");
   bitset<4> c("1011");
   a = a ^ (b = b ^ c);
   cout << a << endl;
   cout << b << endl;
   return 0;
}

Output

Output of the above code is as follows −

0110
1100
Advertisements