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