Asked By
Sharon
230 points
N/A
Posted on - 05/15/2011
Hi there,

I am learning coding in C++. I would like to start, by making a full functional calculator. All of them are pretty done but I want some more options which are present in a scientific calculator, like binary calculation. I don't see any function for this. So I guess I have to make one.

I have been trying to add the binary to decimal conversion. I know that the basic process is:

But how do I take the digits 1 at a time. Should I take the binary number as a string or by integer? Please help.

## Finding Decimal Equivalent of a Binary Number

Sharon,

You don't need to use String as long as you are just considering binary and decimal ( the digits are within 0-9) . You can use a integer.

To fetch the last digit. Use:

lastIDig=n%10;

and then when done calculation of the last digit. You can delete the last digit by simple integer division.

n/=10;

Hope this helps.

Answered By
Sharon
230 points
N/A
#95506
## Finding Decimal Equivalent of a Binary Number

Thank you very much.

But how do I know, how many digits are there in the number? Shall I fix it to be some where around 12 digit, by 0 padding to the left?

I am doing something like:

for(digit=1;digit<=numberofdigits;digit++)

{

result+=(n%10)*mult;

mult*=2;

n/=10;

}

## Finding Decimal Equivalent of a Binary Number

You don't actually need to know the number of digits. Since you are dividing n by the base every time. It will eventually know when the conversion is done, by monitoring n( it would be 0 when done).

while(n>0)

{

result+=(n%10)*mult;

mult*=2;

n/=10;

}

Answered By
Sharon
230 points
N/A
#95510
## Finding Decimal Equivalent of a Binary Number

Thanks a lot. That was a pretty clean solution. So here are my 2 functions.

int binary_to_decimal(int n)

{

int result=0,mult=1;

while(n>0)

{

result+=(n%10)*mult;

mult*=2;

n/=10;

}

return result;

}

and

int from_decimal_to_binary(int n)

{

int result=0,mult=1;

while(n>0)

{

result+=(n%2)*mult;

mult*=10;

n/=2;

}

return result;

}

Tell me if I can make any more upgrade.

## Finding Decimal Equivalent of a Binary Number

You are welcome.

Anyway you can extend this function to be much more generalized. For example this is the 2 generalized functions of yours:

int to_decimal(int n,int b)

{

int result=0,mult=1;

while(n>0)

{

result+=(n%10)*mult;

mult*=b;

n/=10;

}

return result;

}

int from_decimal(int n,int b)

{

int result=0,mult=1;

while(n>0)

{

result+=(n%b)*mult;

mult*=10;

n/=b;

}

return result;

}

They act almost same as yours. I am just passing the base here as a parameter. So it is capable of handling any base conversion ( base smaller than 10). If you want to do a decimal to binary just issue:

from_decimal(n,2); // 2 is the base for binary

for octal

from_decimal(n,8); // same function with base 8.

Answered By
Sharon
230 points
N/A
#95513
## Finding Decimal Equivalent of a Binary Number

That was freaking awesome!! Thank you very much.