# Convert decimal base to binary

## Homework Statement

Convert 33.9 to binary.

## Homework Equations

Division by two and remainders

## The Attempt at a Solution

I'm unsure since it is .9. Using the dividing by two method with the remainders wouldn't account for that. Could I do something like this?
33.9 = 339 *10^-1, convert to binary (101010011) and then account for the scientific notation in some way?

think about the 'divide by two' method with 1/2, 1/4,1/8 etc

vela
Staff Emeritus
Homework Helper
It's easiest if you just do the integer part and fractional part separately. Convert the integer part as usual. For the fractional part, multiply by 2, pick off the integer part, and repeat the process with the new fractional part. For example, for 13/16=0.8125=0.11012, you'd do

0.8125 x 2 = 1.625
0.625 x 2 = 1.25
0.25 x 2 = 0.5
0.5 x 2 = 1.0

Could I do something like this?
33.9 = 339 *10^-1, convert to binary (101010011) and then account for the scientific notation in some way?

You could proceed this way, though it would be cumbersome; it requires long division in binary. 339 = 101010011, and 10 = 1010 (you know how to convert to integers so those two conversions are straightforward). Then do the division: 101010011/1010 (Sorry, I tried to put the long division here but the formatting didn't work.) In any case, you'd find that 33.9 has an infinitely repeating binary equivalent, which is 100001.1(1100) (the part in parentheses is the repeating part).

But @vela's way is the way I recommend doing it.

This article, with more details on the algorithm: http://www.exploringbinary.com/base-conversion-in-php-using-bcmath/ (see section labeled "dec2bin_f())"

Except for the bit where the binary is infinite, that's not too bad. Thanks for the help. On a related note does vela's way work to convert to octal and hexadecimal the same way?

vela
Staff Emeritus
Yes, as long as you realize you're multiplying by the base you're using. Say a number has the base-b representation $(0.d_1d_2d_3d_4\cdots)_b$. When you multiply by b, you shift each digit to the left, so you get $(d_1.d_2d_3d_4\cdots)_b$, so the integer part is the first digit in the representation. You can get the subsequent digits by discarding the integer part and repeating the process.
Yes, as long as you realize you're multiplying by the base you're using. Say a number has the base-b representation $(0.d_1d_2d_3d_4\cdots)_b$. When you multiply by b, you shift each digit to the left, so you get $(d_1.d_2d_3d_4\cdots)_b$, so the integer part is the first digit in the representation. You can get the subsequent digits by discarding the integer part and repeating the process.