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