How does one convert a decimal float to binary using the multiply by 2 method?

In summary, converting a decimal float to binary using the multiply by 2 method involves separating the integer and fractional parts of the decimal number, multiplying the fractional part by 2, and noting the resulting binary digit. This process is repeated until the fractional part becomes zero. The binary equivalent is then formed by combining the binary digits obtained in reverse order.
  • #1
CGandC
326
34
I've started reading A concise introduction to numerical analysis, A.C. Foul and on the first page there's the following paragraph about how a floating point in fixed point precision can be represented:

We live in a continuous world with infinitely many real numbers. However, a computer has only a finite number of bits. This requires an approximate representation. In the past, several different representations of real numbers have been suggested, but now the most widely used by far is the floating point representation. Each floating point representations has a base ##\beta## (which is always assumed to be even) which is typically 2 (binary), 8 (octal), 10 (decimal), or 16 (hexadecimal), and a precision ##p## which is the number of digits (of base ##\beta## ) held in a floating point number. For example, if ##\beta=10## and ##p=5##, the number 0.1 is represented as ##1.0000 \times 10^{-1}##. On the other hand, if ##\beta=2## and ##p=20##, the decimal number 0.1 cannot be represented exactly but is approximately ##1.1001100110011001100 \times 2^{-4}##. We can write the representation as ##\pm d_0 . d_1 \cdots d_{p-1} \times \beta^e##, where ##d_0 . d_1 \cdots d_{p-1}## is called the significand (or mantissa) and has ##p## digits and ##e## is the exponent. If the leading digit ##d_0## is non-zero, the number is said to be normalized. More precisely ##\pm d_0 . d_1 \cdots d_{p-1} \times \beta^e## is the number
##
\pm\left(d_0+d_1 \beta^{-1}+d_2 \beta^{-2}+\cdots+d_{p-1} \beta^{-(p-1)}\right) \beta^\epsilon, 0 \leq d_i<\beta
##

I don't understand the example where it says " ##\beta=2## and ##p=20##, the decimal number 0.1 cannot be represented exactly but is approximately ##1.1001100110011001100 \times 2^{-4}## " . How did the author arrive to ##1.1001100110011001100 \times 2^{-4}##?

I've tried arriving to the result using a method ( I don't know how it's called, I've met in on the internet so I have no idea about its correctness ) in which one keeps multiplying the number after the decimal point by 2 and if it goes past 1.0 then we add 1 to the output, else we add 0 to the output. Also, using a decimal float to binary converter on the web such as on the site https://www.exploringbinary.com/floating-point-converter/ , doesn't give me the author's result.
 
  • Like
Likes pbuk
Computer science news on Phys.org
  • #2
Well if I take the binary float of the mantissa above and convert it to decimal, I get 1.5999999, which when divide by 16 give 0.1 to 6 digits. So the answer in the book is correct. One way to look at it is that in floating point you want the binary mantissa to be 1.something. So what power of 2 do you need to multiply 0.1 by to give a binary mantissa that is 1.something?
0.4 = 0.0110011...
0.8 = 0.110011...
1.6 = 1.100110011...
3.2 = 11.00110011...

So this fixes the binary exponent as -4. Then you convert 1.6 to binary and you get the result above.
 
  • Like
Likes CGandC
  • #3
Also, on the conversion site you linked, if you convert the decimal 0.1 to Normalized binary scientific notation, you get the result in the book.
 
  • #4
Understood, thanks!. I missed the result at the site, sorry, my bad.
 
  • #5
Note that the binary expansion of 0.1 can be obtained as [tex]\begin{split}
\frac{1}{10} &= \frac{3}{30} \\
&= \frac12 \cdot \frac{3}{15} \\
&= \frac12 \cdot \frac{3}{16} \cdot \frac{16}{15} \\
&= \frac{3}{32} \left(1 + \frac{1}{16} + \frac{1}{16^2} + \dots \right) \\
&= 2^{-5} \times (11.0011001100110011\dots)_2 \\
&= (1.100110011001100\dots)_2 \times 2^{-4}. \end{split}[/tex] The basis of the technique is to ensure that the denominator is either [itex]2^n[/itex], in which case the expansion terminates, or else has a factor of [itex]2^n - 1[/itex] in which case the expansion eventually repeats, using [tex]
\frac{1}{2^n - 1} = 2^{-n} \frac{1}{1 - 2^{-n}} = 2^{-n}(1 + 2^{-n} + 2^{-2n} + \dots).[/tex]
 
  • Like
Likes phyzguy and CGandC

FAQ: How does one convert a decimal float to binary using the multiply by 2 method?

How does one convert a decimal float to binary using the multiply by 2 method?

To convert a decimal float to binary using the multiply by 2 method, you first multiply the decimal part of the number by 2. The whole number part of the result becomes the next binary digit. You continue this process with the decimal part of the result until you reach the desired precision.

What do you do with the whole number part when converting a decimal float to binary using the multiply by 2 method?

The whole number part of the result when multiplying by 2 becomes the next binary digit in the conversion process. It is important to keep track of both the whole number and decimal parts separately to accurately convert the decimal float to binary.

How do you handle repeating decimals when using the multiply by 2 method to convert to binary?

When dealing with repeating decimals in the conversion process, you may need to round off the result at a certain precision to avoid an infinite loop. This rounding can introduce some error in the final binary representation but is necessary to complete the conversion.

Are there any limitations to using the multiply by 2 method to convert decimal floats to binary?

One limitation of the multiply by 2 method is that it may not work well with very large or very small decimal numbers, as the precision required for an accurate binary representation may be difficult to achieve. In such cases, other methods like scientific notation or fixed-point arithmetic may be more suitable.

What are some tips for successfully converting decimal floats to binary using the multiply by 2 method?

Some tips for successful conversion include keeping track of both the whole number and decimal parts separately, rounding off repeating decimals at a certain precision, and being mindful of the limitations of this method for very large or very small numbers. Practice and familiarity with the process will also help improve accuracy and efficiency in converting decimal floats to binary.

Back
Top