Selected Reading

C++ Bitset::operator& Function



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

The bitwise AND operator is a binary operator that performs a bitwise AND operation between the bits of two operands. It returns a value where each bit is set to 1 if the corresponding bit of the left operand and the corresponding bit of the right operand is 1. Otherwise, the bit is set to 0.

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 AND 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 the "b" to the binary value "1010", and the "mask" to the binary value "1000". Then, we are performing a bitwise AND operation between them and storing the result in a new variable "result".

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

int main() {
   bitset<4> b("1010");
   bitset<4> mask("1000");
   /* Trun off all bits except 1st bit */
   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 −

1000

Example 2

Here, we are using a bitset and an integer to perform a bitwise AND 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 AND operation and storing the resultant bits in "result".

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

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

Output

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

00001000

Example 3

Now, we are trying to perform a bitwise AND 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 AND operation and storing the result in "bits".

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

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

Output

Following is the output of the above code −

110

Example 4

In here, we are using multiple (chaining) bitwise AND 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 AND operator to first perform a bitwise AND 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 −

0010
0011
Advertisements