# How to set bits in all numbers from 1 to n in C++

In this tutorial, I will be showing to set bits of all numbers from 1 to n. I will be using C++ to implement my approach.

Setting bits of a number basically means to change the bit to 1 from 0. The bit should be on for the specified index by the user. Let us take an example to make this idea clear:

**Number: 129**

**Binary: 10000001**

**Set Bit: 7**

**Result: 193**

I will be using a bitwise operator for carrying out this function. It can also be done without the use of a bitwise operator. However, changing every number into its binary would make the program very complex. Hence, I have used the operator to keep the concept easy to understand.

I have made two functions: **setbit() **and **main() **function in my code to carry out this operation,

The **setbit() ** function takes two parametrized inputs. One is the total numbers that need to be altered from 1 to n. The second parameter is the k(th) bit that needs to be set in each number. I have used a **for** loop to go through all numbers from 1 to n. I set the bit, using the bitwise OR ( | ) operator. However, note here we need to set the k(th) bit so we need to go to that bit first. For this, I have used the left shift operator that shifts the 1 to the desired bit and then does the bitwise OR.

In the **main() **function, I take the two user inputs and pass them as parameters to my **setbit() **function.

I have shown my code below:

#include<iostream> using namespace std; void setbit(int k, int t) { int i; //Loop for numbers from 1 to n for(i=1;i<=t;i++) { //using biwise OR int x = (i) | 1 << (k-1); cout << (i) << " --> " << x << " " << endl; } } int main() { int n, bit; cout << "Enter n" << endl; cin >> n; cout << "Enter bit to be set in numbers from 1 to n" << endl; cin >> bit; setbit(bit, n); return 0; }

**Input:**

I take user input as n = 5 and k = 3. So for numbers from 1 to 5, the 3rd bit will be set.

**Output:**

Enter n 5 Enter bit to be set in numbers from 1 to n 3 1 --> 5 2 --> 6 3 --> 7 4 --> 4 5 --> 5

## Leave a Reply