```
#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.