Selected Reading

C++ Bitset::set() Function



The C++ function std::bitset::set() sets all the bits in the bitset object to one. This implies that all bits that were previously 0 will be set to 1.

This function has 2 polymorphic variants: with a parameter and without any parameter (You can find the syntaxes of all the variants below). If we do not pass any parameter to the function, then it sets all the bits of the bitset to one. If we pass a parameter to the function, then it sets the bit to the value at the specified position.

Syntax

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

bitset& set();
or,
bitset& set (size_t pos, bool val = true);

Parameters

  • pos − Position of the bit whose value is to be flipped.
  • val − Value to be set.

Return value

Returns this pointer.

Example 1

The following example shows the usage of std::bitset::set() function without any parameter.

We are creating a bitset object "b" of size "4" with default value (i.e. zero). We are then using the set() function to set all the bits of "b" to 1.

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

int main(void) {
   bitset<4> b;
   cout << "Before set operation b = " << b << endl;
   b.set();
   cout << "After set operation b = " << b << endl;
   return 0;
}

Output

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

Before set operation b = 0000
After set operation b = 1111

Example 2

Here, we are setting a bit at a specified position of the bitset using the set() function.

We are creating a bitset "b" of size "4" with default binary value. We are then passing "0" and "1" as arguments to the set() function to set the first bit to 1.

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

int main(void) {
   bitset<4> b;
   cout << "Before set operation b = " << b << endl;
   b.set(0, 1);
   cout << "After set operation b = " << b << endl;
   return 0;
}

Output

The above code will produce the following result −

Before set operation b = 0000
After set operation b = 0001

Example 3

Now, we are trying to set bits of two different bitsets using the set() function.

We are creating two bitsets "b1" and "b2" of size "8" with the values "01100100" and "11001010" respectively. We are then using the set() function to set all bits of "b1" and the bit at fifth position from the least significant (rightmost) bit of "b2" to 1.

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

int main() {
   bitset<8> b1("01100100");
   bitset<8> b2("11001010");
   cout << "Before setting: b1 = " << b1 << ", b2 = " << b2 << endl;
   b1.set();
   b2.set(4);
   cout << "After setting:  b1 = " << b1 << ", b2 = " << b2 << endl;
   return 0;
}

Output

Following is an output of the above code −

Before setting: b1 = 01100100, b2 = 11001010
After setting:  b1 = 11111111, b2 = 11011010

Example 4

In here, we are trying to set the bits of a bitset using a loop.

In the following example, we are creating a bitset "b" of size "8" with the binary value "10011011". Then, we are using a for loop to set every second bit starting from the least significant bit of the bitset to 1 using the set() function.

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

int main() {
   bitset<8> b("10011011");
   cout << "Before setting: " << b << endl;
   for(int i = 0; i < b.size(); i += 2) {
      b.set(i);
   }
   cout << "After setting:  " << b << endl;
   return 0;
}

Output

Output of the above code is as follows −

Before setting: 10011011
After setting:  11011111
Advertisements