← Binary Course — Part D, lesson 1 of 4 (Fractions in binary)
14. Place Value Past the Point
The concept
Every lesson so far has stayed on the left side of an invisible line: whole
numbers only. You already know how to cross that line in decimal, though —
in 347.25, place value doesn't stop at the ones column, it just keeps
going, with each position past the point worth ten times less than the
one before it instead of ten times more:
hundreds tens ones . tenths hundredths
3 4 7 . 2 5
(10^2) (10^1)(10^0) (10^-1) (10^-2)
0.25 means 2 x (1/10) + 5 x (1/100), nothing more mysterious than the
whole-number place value Lesson 2 already covered, just running in the
other direction.
Binary works exactly the same way, with the same two changes Lesson 2 made to whole numbers: each position past the point is only twice as small as the one before it (not ten times), and each position can only hold a 0 or a 1.
ones . halves quarters eighths sixteenths
2^0 . 2^-1 2^-2 2^-3 2^-4
1/2 1/4 1/8 1/16
Positions past the point are named by their place value or their ordinal position ("the first position after the point," "worth 1/8") — Lesson 2's bit-0-is-rightmost indexing covers whole numbers only and doesn't extend past the point. To read a binary fraction's decimal value, do exactly what Lesson 2's Example 2 did for whole numbers: add up the place values of every position holding a 1.
One thing does not carry over, and it's worth naming before it causes a
mistake: the same digits mean different things depending on whether a point
is present, and where. 011000 with no point is a whole number, 24.
0.11000 — the same six digits, a point inserted after the first one — is
0.75, an entirely different value. Bits alone never say which reading
applies; only the point tells you. That's why a bit string in this course
is never shown without either an explicit point or an explicit "(read as
a whole number)" note — leaving it out would leave the value itself
undefined, not just unclear. Example 3 below works through exactly this
trap.
Example 1 — reading a pure fraction
Take 0.101. Line up the three positions after the point with their place
values and add up wherever there's a 1:
position: 1st 2nd 3rd
bit: 1 0 1
place value: 1/2 1/4 1/8
1 x 1/2 + 0 x 1/4 + 1 x 1/8 = 0.5 + 0.125 = 0.625. 0.101 is 0.625.
Example 2 — reading a mixed whole-and-fractional number
Take 0110 1101.101 — Lesson 2's running example, 0110 1101 (worth 109),
with Example 1's fraction tacked on after the point. Read each side of the
point by its own rule and add the results:
whole part: 0110 1101 = 109 (Lesson 2's method)
fractional part: .101 = 0.625 (Example 1's method)
109 + 0.625 = 109.625
0110 1101.101 is 109.625. The point doesn't change either method — it
just marks where one place-value table (powers of two, growing) hands off
to the other (powers of two, shrinking).
Example 3 — the same bits, two different values
Here's the trap the concept section named. Take the six digits 011000
with no point at all — an ordinary whole number:
place value: 32 16 8 4 2 1
bit: 0 1 1 0 0 0
16 + 8 = 24.
Now take the same six digits with a point inserted after the first one:
0.11000.
position: 1st 2nd 3rd 4th 5th
bit: 1 1 0 0 0
place value: 1/2 1/4 1/8 1/16 1/32
1/2 + 1/4 = 0.75.
Same six digits, 24 versus 0.75 — not close, not a rounding
difference, entirely different values. Nothing in the bits themselves
picks one reading over the other; the point is the only thing that
decides, which is exactly why it's never left out or left implicit.
Example 4 — building a fraction's bit pattern from a decimal value
Take 0.8125 and go the other direction, the same greedy method Lesson 2
Example 3 used for whole numbers: at each position, ask "does this
position's place value fit into what's left?" If yes, set that bit to 1
and subtract; if no, set it to 0 and move on. Stop once nothing is left.
place value 1/2: 1/2 ≤ 0.8125 → bit = 1, remainder 0.8125 − 0.5 = 0.3125
place value 1/4: 1/4 ≤ 0.3125 → bit = 1, remainder 0.3125 − 0.25 = 0.0625
place value 1/8: 1/8 ≤ 0.0625? no → bit = 0
place value 1/16: 1/16 ≤ 0.0625 → bit = 1, remainder 0.0625 − 0.0625 = 0
Reading the bits in order gives 0.1101. Check it against Example 1's
method: 1/2 + 1/4 + 1/16 = 0.5 + 0.25 + 0.0625 = 0.8125. Correct.
This greedy method only lands on remainder 0 because 0.8125 happens to
be built entirely from powers of two (it's 13/16). Lesson 15 covers what
to do when a decimal fraction doesn't cooperate that way.
Exercises
Exercise 1. Using Example 2's method, what decimal value does
1010.0101 represent?
Exercise 2. Using Example 4's method, find the bit pattern for
5.375 (whole part and fractional part separately, then combined).
Exercise 3. A word contains the six digits 010100, with no point
shown. What value does it represent — as a whole number, and separately,
as a fraction assuming a point sits after the first digit? Can you say
which one is "the" value without more information? Why or why not?
Exercise 4. A classmate reads 0.101 by reusing Lesson 2's
whole-number place values directly: "the three positions after the point
are just like three bit positions, so their place values are 4, 2, 1 —
1x4 + 0x2 + 1x1 = 5." What did they get wrong, and what's the correct
value?
Show Answer Key
1. Whole part 1010 = 8 + 2 = 10 (Lesson 2's method). Fractional part
.0101: positions worth 1/2, 1/4, 1/8, 1/16 under bits 0, 1, 0, 1, so
1/4 + 1/16 = 0.25 + 0.0625 = 0.3125. Total: 10 + 0.3125 = 10.3125.
2. Whole part: 5 = 0101 (Lesson 2's greedy method: 4 ≤ 5 → bit set,
remainder 1; 2 ≤ 1? no; 1 ≤ 1 → bit set, remainder 0). Fractional part:
0.375 — 1/2 ≤ 0.375? no; 1/4 ≤ 0.375 → bit set, remainder 0.125;
1/8 ≤ 0.125 → bit set, remainder 0 — giving .011. Combined:
0101.011.
3. As a whole number, 010100 = 16 + 4 = 20. As a fraction with a
point after the first digit, 0.10100 = 1/2 + 1/8 = 0.625. Neither
reading is "the" value — the six digits are identical in both cases, and
nothing about the bits themselves indicates where, or whether, a point
belongs. The value is only well-defined once something outside the bits
(a stated convention, a labeled point) settles the question, exactly as
the concept section's 011000 example showed.
4. The classmate reused whole-number place values (4, 2, 1, growing
to the left) for positions that are past the point, where place values
shrink to the right instead (1/2, 1/4, 1/8). Lesson 2's indexing scheme
covers whole-number positions only; it was never meant to extend past the
point, and doing so silently produces a plausible-looking but wrong
answer. The correct value, using the shrinking place values: 1x1/2 + 0x1/4 + 1x1/8 = 0.625.
Lesson 15 picks up the natural next question: given an arbitrary decimal
fraction, how do you find its binary bit pattern when — unlike this
lesson's 0.8125 — it doesn't land on a clean sum of powers of two at
all?
Sign in to mark lessons complete and keep your progress.