Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fixed Point to Decimal Help

  1. May 7, 2012 #1

    I am currently trying to figure out if its possible to go from a number in (unsigned) Q3.5 format -> 8 bits given.

    And print it on a display in decimal.

    I only have a 8 bit microcontroller to work with.

    For example 011.11010 should have 3.8125

    Getting to 3 is easy but I can't see how I could get 8125 - I know I need to divide the 26 by 2^5 but this would give me 0 as an inside an 8 bit microcontroller.

    Any tips - Or some C source code would be lovely.
    Thanks in advance.
  2. jcsd
  3. May 7, 2012 #2


    Staff: Mentor

    The part of your number to the right of the 'binary' point is a binary fraction.

    .11010 means 1 * 2-1 + 1 * 22 + 0 * 2-3 + 1 * 2-4 + 0 * 2-5
    = 1/2 + 1/4 + 0/8 + 1/16 + 0/32
    = 13/16
    = .8125

    Please excuse me if you already know this. At first I thought you didn't, because of what you said about 26. I then realized that you were adding the bits, and didn't realize that you were representing the fraction as 26/32, which is the same as 13/16.

    Binary fractions work exactly like decimal fractions except that instead of having decreasing negative powers of 10, you have decreasing negative powers of 2.
    I recommend using a lookup table. The table (an array) should have 32 elements, one for each possible value of a 5 bit number. Each element in the table is a string of decimal digits.

    Index the table by the sum of the 5 bits.
  4. May 7, 2012 #3
    Hey, thanks for the reply.

    Yeah I figure out how to get the conversions - Sorry about my ambigous language.

    Figured out if I store it in a int (4 bytes) then I can bit mask to get the 5 bits representing the fractional - then multiply by 100000 and divide by 2^5 giving me the fractional bits without the point.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook