Selected Reading

C++ Bitset::test() Function



The C++ function std::bitset::test() tests whether the bit at the specified position is set.

The test() function takes a single integer argument, which represents the index of the bit to be tested, and returns a boolean value indicating whether the bit is set (i.e., has a value of 1) or not (i.e., has a value of 0).

The bitset class is a container that represents a fixed-size sequence of bits. Each bit in the bitset can have a value of either 0 or 1. The bitset class provides a number of member functions to manipulate individual bits of the bitset.

Syntax

Following is the syntax for std::bitset::test() function −

bool test (size_t pos) const;

Parameters

pos − Position of the bit whose value is to be tested.

Return value

Returns true if Nth bit is set; otherwise false.

Example 1

The following example shows the usage of std::bitset::test() function by checking the state of a single bit in a bitset.

We are creating a bitset object "b" of size 4 with the binary value "1010". We are then using the test() function to check the state of the first and second bits.

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

int main(void) {
   bitset<4> b(1010);
   if (b.test(1))
      cout << "1st bit is set." << endl;
   if (b.test(0))
      cout << "0th bit is set." << endl;
   else
      cout << "0th bit is not set." << endl;
   return 0;
}

Output

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

1st bit is set.
0th bit is not set.

Example 2

Here, we are checking multiple bits in a loop whether they are set using the test() function.

We are creating a bitset object "b" of size "4" with the binary value "1010". We are then using a loop to iterate over all the bits in the bitset and checking whether each bit is set using the test() function.

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

int main() {
   bitset<4> b("1010");
   for (int i = 0; i < b.size(); i++) {
      if (b.test(i)) {
         cout << "Bit " << i << " is set." << endl;
      } else {
         cout << "Bit " << i << " is not set." << endl;
      }
   }
}

Output

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

Bit 0 is not set.
Bit 1 is set.
Bit 2 is not set.
Bit 3 is set.

Example 3

Now, we are testing if any bit is set in the bitset using the test() function.

In the example given below, we are using the any() function to check if any bit in the bitset is set, and if so, the program loops through the bitset to retrieve the position of the set bits.

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

int main() {
   bitset<7> b("0000100");
   if (b.any()) {
      cout << "At least one bit is set." << endl;
      for (int i = 0; i < 7; i++) {
         if (b.test(i)==1) {
            cout << "Bit " << i << " is set." << endl;
         } else {
            cout << "No bits are set." << endl;
         }
      }
   }
}

Output

Following is an output of the above code −

At least one bit is set.
No bits are set.
No bits are set.
Bit 2 is set.
No bits are set.
No bits are set.
No bits are set.
No bits are set.

Example 4

In here, we are checking whether bits of a bitset are set using bitwise AND operator.

In the following example, we are creating two bitset objects "b" and "mask" of size "8" with the binary values "10101010" and "11111010" respectively. We are then performing a bitwise AND operation between "b" and "mask", and storing the result in a new bitset object "isSet". Then, we are checking if all the bits in "isSet" are set to 1 using the all() function in conjunction with the test() function to retrieve the position of the unset bits.

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

int main() {
   bitset<8> b("10101010");
   bitset<8> mask("11111010");
   bitset<8> isSet = (b & mask);
   if (isSet.all()== true){ 
      for (int i = 0; i < 8; i++) {
         if (isSet.test(i) == 1) {
            cout << "All the bits of isSet are 1." << endl;
         } else {
            for (int i = 0; i < 8; i++) {
               if (isSet.test(i) == 0) {
                  cout << "Bit " << i << " is not set." << endl;
               }
            }
         }
      }
   }
}   

Output

Output of the above code is as follows −

Bit 0 is not set.
Bit 2 is not set.
Bit 4 is not set.
Bit 6 is not set.
Advertisements