Binary Fractions use the same weighting principle as decimal numbers except that each binary digit uses the base-2 numbering system.
We know that decimal (or denary) numbers use the base ten (base-10) numbering system where each digit in a decimal number is allowed to take one of ten possible values in the range of 0 to 9. So moving from right to left along a decimal number, each digit will have a value ten times greater than the digit to its immediate right.
But as well as each digit being ten times bigger than the previous number as we move from right-to-left, each digit can also be ten times smaller than its neighbouring number as we move along in the opposite direction from left-to-right.
However, once we reach zero (0) and the decimal point, we do not need to just stop, but can continue moving from left-to-right along the digits producing what are generally called Fractional Numbers.
Here in this decimal (or denary) number example, the digit immediately to the right of the decimal point (number 5) is worth one tenth (1/10 or 0.1) of the digit immediately to the left of the decimal point (number 4) which as a multiplication value of one (1).
Thus as we move through the number from left-to-right, each subsequent digit will be one tenth the value of the digit immediately to its left position, and so on.
Then the decimal numbering system uses the concept of positional or relative weighting values producing a positional notation, where each digit represents a different weighted value depending on the position occupied either side of the decimal point.
Thus mathematically in the standard denary numbering system, these values are commonly written as: 40, 31, 22, 13 for each position to the left of the decimal point in our example above. Likewise, for the fractional numbers to right of the decimal point, the weight of the number becomes more negative giving: 5-1, 6-2, 7-3 etc.
So we can see that each digit in the standard decimal system indicates the magnitude or weight of that digit within the number. Then the value of any decimal number will be equal to the sum of its digits multiplied by their respective weights, so for our example above: N = 1234.56710 in the weighted decimal format this will be equal too:
1000 + 200 + 30 + 4 + 0.5 + 0.06 + 0.007 = 1234.56710
or it could be written to reflect the weighting of each denary digit:
(1×1000) + (2×100) + (3×10) + (4×1) + (5×0.1) + (6×0.01) + (7×0.001) = 1234.56710
or even in polynomial form as:
(1×103) + (2×102) + (3×101) + (4×100) + (5×10-1) + (6×10-2) + (7×10-3) = 1234.56710
We can also use this idea of positional notation where each digit represents a different weighted value depending upon the position it occupies in the binary numbering system. The difference this time is that the binary number system (or simply binary numbers) is a positional system, where the different weighted positions of the digits are to the power of 2 (base-2) instead of 10.
The binary numbering system is a base-2 numbering system which contains only two digits, a “0” or a “1”. Thus each digit of a binary number can take the “0” or the “1” value with the position of the 0 or 1 indicating its value or weighting. But we can also have binary weighting for values of less than 1 producing what are called unsigned fractional binary numbers.
Similar to decimal fractions, binary numbers can also be represented as unsigned fractional numbers by placing the binary digits to the right of the decimal point or in this case, binary point. Thus all the fractional digits to the right of the binary point have respective weightings which are negative powers of two, creating a binary fraction. In other words, the powers of 2 are negative.
So for the fractional binary numbers to the right of the binary point, the weight of each digit becomes more negative giving: 2-1, 2-2, 2-3, 2-4, and so on as shown.
Thus if we take the binary fraction of 0.10112 then the positional weights for each of the digits is taken into account giving its decimal equivalent of:
For this example, the decimal fraction conversion of the binary number 0.10112 is 0.687510.
Now lets suppose we have the following binary number of: 1101.01112, what will be its decimal number equivalent.
1101.0111 = (1×23) + (1×22) + (0×21) + (1×20) + (0×2-1) + (1×2-2) + (1×2-3) + (1×2-4)
= 8 + 4 + 0 + 1 + 0 + 1/4 + 1/8 + 1/16
= 8 + 4 + 0 + 1 + 0 + 0.25 + 0.125 + 0.0625 = 13.437510
Hence the decimal equivalent number of 1101.01112 is given as: 13.437510
So we can see that fractional binary numbers, that is binary numbers that have a weighting of less than 1 (20), can be converted into their decimal number equivalent by successively dividing the binary weighting factor by the value of two for each decrease in the power of 2, remembering also that 20 is equal to 1, and not zero.
0.11 = (1×2-1) + (1×2-2) = 0.5 + 0.25 = 0.7510
11.001 = (1×21) + (1×20) + (1×2-3) = 2 + 1 + 0.125 = 3.12510
1011.111 = (1×23) + (1×21) + (1×20) (1×2-1) + (1×2-2) + (1×2-3)
= 8 + 2 + 1 + 0.5 + 0.25 + 0.125 = 11.87510
The conversion of a decimal fraction to a fractional binary number is achieved using a method similar to that we used for integers. However, this time multiplication is used instead of division with the integers instead of remainders used with the carry digit being the binary equivalent of the fractional part of the decimal number.
When converting from decimal to binary, the integer (positive sequence right-to-left) part and the fractional (negative sequence from left-to-right) part of the decimal number are calculated separately.
For the integer part of the number, the binary equivalent is found by successively dividing (known as successive division) the integer part of the decimal number repeatedly by 2 (÷2), noting the remainders in reverse order from the least significant bit (LSB) to the most significant bit (MSB), until the value becomes “0” producing the binary equivalent.
So to find the binary equivalent of the decimal integer: 11810
118 (divide by 2) = 59 plus remainder 0 (LSB)
59 (divide by 2) = 29 plus remainder 1 (↑)
29 (divide by 2) = 14 plus remainder 1 (↑)
14 (divide by 2) = 7 plus remainder 0 (↑)
7 (divide by 2) = 3 plus remainder 1 (↑)
3 (divide by 2) = 1 plus remainder 1 (↑)
1 (divide by 2) = 0 plus remainder 1 (MSB)
Then the binary equivalent of 11810 is therefore: 11101102 ← (LSB)
The fractional part of the number is found by successively multiplying (known as successive multiplication) the given fractional part of the decimal number repeatedly by 2 (×2), noting the carries in forward order, until the value becomes “0” producing the binary equivalent.
So if the multiplication process produces a product greater than 1, the carry is a “1” and if the multiplication process produces a product less than “1”, the carry is a “0”.
Note also that if the successive multiplication processes does not seem to be heading towards a final zero, the fractional number will have an infinite length or until the equivalent number of bits have been obtained, for example 8-bits. or 16-bits, etc. depending on the degree of accuracy required.
So to find the binary fraction equivalent of the decimal fraction: 0.812510
0.8125 (multiply by 2) = 1.625 = 0.625 carry 1 (MSB)
0.625 (multiply by 2) = 1.25 = 0.25 carry 1 (↓)
0.25 (multiply by 2) = 0.50 = 0.5 carry 0 (↓)
0.5 (multiply by 2) = 1.00 = 0.0 carry 1 (LSB)
Thus the binary equivalent of 0.812510 is therefore: 0.11012 ← (LSB)
We can double check this answer using the procedure above to convert a binary fraction into a decimal number equivalent: 0.1101 = 0.5 + 0.25 + 0.0625 = 0.812510
Find the binary fraction equivalent of the following decimal number: 54.6875
First we convert the integer 54 to a binary number in the normal way using successive division from above.
54 (divide by 2) = 27 remainder 0 (LSB)
27 (divide by 2) = 13 remainder 1 (↑)
13 (divide by 2) = 6 remainder 1 (↑)
6 (divide by 2) = 3 remainder 0 (↑)
3 (divide by 2) = 1 remainder 1 (↑)
1 (divide by 2) = 0 remainder 1 (MSB)
Thus the binary equivalent of 5410 is therefore: 1101102
Next we convert the decimal fraction 0.6875 to a binary fraction using successive multiplication.
0.6875 (multiply by 2) = 1.375 = 0.375 carry 1 (MSB)
0.375 (multiply by 2) = 0.75 = 0.75 carry 0 (↓)
0.75 (multiply by 2) = 1.50 = 0.5 carry 1 (↓)
0.5 (multiply by 2) = 1.00 = 0.0 carry 1 (LSB)
Thus the binary equivalent of 0.687510 is therefore: 0.10112 ← (LSB)
Hence the binary equivalent of the decimal number: 54.687510 is 110110.10112
We have seen here in this tutorial about Binary Fractions that to convert any decimal fraction into its equivalent binary fraction, we must multiply the decimal fractional part, and only the decimal fractional part by 2 and record the digit that appears to the left of the binary point. This binary digit which is the carry digit will ALWAYS be either a “0” or a “1”.
We must then multiply the remaining decimal fraction by 2 again repeating the above sequence using successive multiplication until the fraction is reduced to zero or the required amount of binary bits has been completed for a repeating binary fraction. Fractional numbers are represented by negative powers of 2.
For mixed decimal numbers we must perform two separate operations. Successive division for the integer part to the left of the decimal point and successive multiplication for the fractional part to the right of the decimal point.
Note that the integer part of a mixed decimal number will always have an exact binary number equivalent but the decimal fractional part may not, since we could get a repeating fraction resulting in an infinite number of binary digits if we wanted to represent the decimal fraction exactly.