# Have some doubts in the operation [Bitwise Manipulation]

``````#include <iostream>
#include <math.h>
using namespace std;

// converting from decimal to binary

int main()
{
int n, bit, ans = 0, i = 0;
cout << "enter a number: ";
cin >> n;
while (n > 0)
{
bit = n & 1;
ans = round(bit * pow(10, i)) + ans; /* we used 'round' bcoz pow(10, 2) give 99.99999
it differs from compiler to compiler  */
n = n >> 1;
i++;
}

cout << ans;
return 0;
}
``````

I am unable to understand that in while(n>0), n will be stored as binary form or decimal form.
That is if n=5, so whether while loop check for (5>0) or (101>0).

Can anyone explain what is happening here?

I am new to this platform, please don’t delete my question. My earlier questions are also gets deleted due enough dislikes. I am here to learn and am still learning.

### >Solution :

"Decimal" and "Binary" are text representations of a value. `n` is an `int`, not text, so it holds the value `5`. If I have 5 apples on a desk, then there is no "decimal" or "binary" involved. THere’s just 5 apples. Same with `int`.

``````cin >> n;
while (n > 0)
``````

This loop continues because `5 > 0`.

``````n = n >> 1;
``````

This is just a fancy way of writing `n = n / 2`, so then `n` becomes `2`. Since `2 > 0`, the loop continues. On the third run, `n` becomes `1`, and since `1 > 0`, the loop continues a third time. On the fourth run, `n` becomes `0`, and `0 == 0`, so the while loop exits.