0.000 000 171 999 985 809 634 381 439 536 771 3 Converted to 32 Bit Single Precision IEEE 754 Binary Floating Point Representation Standard

Convert decimal 0.000 000 171 999 985 809 634 381 439 536 771 3(10) to 32 bit single precision IEEE 754 binary floating point representation standard (1 bit for sign, 8 bits for exponent, 23 bits for mantissa)

What are the steps to convert decimal number
0.000 000 171 999 985 809 634 381 439 536 771 3(10) to 32 bit single precision IEEE 754 binary floating point representation (1 bit for sign, 8 bits for exponent, 23 bits for mantissa)

1. First, convert to binary (in base 2) the integer part: 0.
Divide the number repeatedly by 2.

Keep track of each remainder.

We stop when we get a quotient that is equal to zero.


  • division = quotient + remainder;
  • 0 ÷ 2 = 0 + 0;

2. Construct the base 2 representation of the integer part of the number.

Take all the remainders starting from the bottom of the list constructed above.

0(10) =


0(2)


3. Convert to binary (base 2) the fractional part: 0.000 000 171 999 985 809 634 381 439 536 771 3.

Multiply it repeatedly by 2.


Keep track of each integer part of the results.


Stop when we get a fractional part that is equal to zero.


  • #) multiplying = integer + fractional part;
  • 1) 0.000 000 171 999 985 809 634 381 439 536 771 3 × 2 = 0 + 0.000 000 343 999 971 619 268 762 879 073 542 6;
  • 2) 0.000 000 343 999 971 619 268 762 879 073 542 6 × 2 = 0 + 0.000 000 687 999 943 238 537 525 758 147 085 2;
  • 3) 0.000 000 687 999 943 238 537 525 758 147 085 2 × 2 = 0 + 0.000 001 375 999 886 477 075 051 516 294 170 4;
  • 4) 0.000 001 375 999 886 477 075 051 516 294 170 4 × 2 = 0 + 0.000 002 751 999 772 954 150 103 032 588 340 8;
  • 5) 0.000 002 751 999 772 954 150 103 032 588 340 8 × 2 = 0 + 0.000 005 503 999 545 908 300 206 065 176 681 6;
  • 6) 0.000 005 503 999 545 908 300 206 065 176 681 6 × 2 = 0 + 0.000 011 007 999 091 816 600 412 130 353 363 2;
  • 7) 0.000 011 007 999 091 816 600 412 130 353 363 2 × 2 = 0 + 0.000 022 015 998 183 633 200 824 260 706 726 4;
  • 8) 0.000 022 015 998 183 633 200 824 260 706 726 4 × 2 = 0 + 0.000 044 031 996 367 266 401 648 521 413 452 8;
  • 9) 0.000 044 031 996 367 266 401 648 521 413 452 8 × 2 = 0 + 0.000 088 063 992 734 532 803 297 042 826 905 6;
  • 10) 0.000 088 063 992 734 532 803 297 042 826 905 6 × 2 = 0 + 0.000 176 127 985 469 065 606 594 085 653 811 2;
  • 11) 0.000 176 127 985 469 065 606 594 085 653 811 2 × 2 = 0 + 0.000 352 255 970 938 131 213 188 171 307 622 4;
  • 12) 0.000 352 255 970 938 131 213 188 171 307 622 4 × 2 = 0 + 0.000 704 511 941 876 262 426 376 342 615 244 8;
  • 13) 0.000 704 511 941 876 262 426 376 342 615 244 8 × 2 = 0 + 0.001 409 023 883 752 524 852 752 685 230 489 6;
  • 14) 0.001 409 023 883 752 524 852 752 685 230 489 6 × 2 = 0 + 0.002 818 047 767 505 049 705 505 370 460 979 2;
  • 15) 0.002 818 047 767 505 049 705 505 370 460 979 2 × 2 = 0 + 0.005 636 095 535 010 099 411 010 740 921 958 4;
  • 16) 0.005 636 095 535 010 099 411 010 740 921 958 4 × 2 = 0 + 0.011 272 191 070 020 198 822 021 481 843 916 8;
  • 17) 0.011 272 191 070 020 198 822 021 481 843 916 8 × 2 = 0 + 0.022 544 382 140 040 397 644 042 963 687 833 6;
  • 18) 0.022 544 382 140 040 397 644 042 963 687 833 6 × 2 = 0 + 0.045 088 764 280 080 795 288 085 927 375 667 2;
  • 19) 0.045 088 764 280 080 795 288 085 927 375 667 2 × 2 = 0 + 0.090 177 528 560 161 590 576 171 854 751 334 4;
  • 20) 0.090 177 528 560 161 590 576 171 854 751 334 4 × 2 = 0 + 0.180 355 057 120 323 181 152 343 709 502 668 8;
  • 21) 0.180 355 057 120 323 181 152 343 709 502 668 8 × 2 = 0 + 0.360 710 114 240 646 362 304 687 419 005 337 6;
  • 22) 0.360 710 114 240 646 362 304 687 419 005 337 6 × 2 = 0 + 0.721 420 228 481 292 724 609 374 838 010 675 2;
  • 23) 0.721 420 228 481 292 724 609 374 838 010 675 2 × 2 = 1 + 0.442 840 456 962 585 449 218 749 676 021 350 4;
  • 24) 0.442 840 456 962 585 449 218 749 676 021 350 4 × 2 = 0 + 0.885 680 913 925 170 898 437 499 352 042 700 8;
  • 25) 0.885 680 913 925 170 898 437 499 352 042 700 8 × 2 = 1 + 0.771 361 827 850 341 796 874 998 704 085 401 6;
  • 26) 0.771 361 827 850 341 796 874 998 704 085 401 6 × 2 = 1 + 0.542 723 655 700 683 593 749 997 408 170 803 2;
  • 27) 0.542 723 655 700 683 593 749 997 408 170 803 2 × 2 = 1 + 0.085 447 311 401 367 187 499 994 816 341 606 4;
  • 28) 0.085 447 311 401 367 187 499 994 816 341 606 4 × 2 = 0 + 0.170 894 622 802 734 374 999 989 632 683 212 8;
  • 29) 0.170 894 622 802 734 374 999 989 632 683 212 8 × 2 = 0 + 0.341 789 245 605 468 749 999 979 265 366 425 6;
  • 30) 0.341 789 245 605 468 749 999 979 265 366 425 6 × 2 = 0 + 0.683 578 491 210 937 499 999 958 530 732 851 2;
  • 31) 0.683 578 491 210 937 499 999 958 530 732 851 2 × 2 = 1 + 0.367 156 982 421 874 999 999 917 061 465 702 4;
  • 32) 0.367 156 982 421 874 999 999 917 061 465 702 4 × 2 = 0 + 0.734 313 964 843 749 999 999 834 122 931 404 8;
  • 33) 0.734 313 964 843 749 999 999 834 122 931 404 8 × 2 = 1 + 0.468 627 929 687 499 999 999 668 245 862 809 6;
  • 34) 0.468 627 929 687 499 999 999 668 245 862 809 6 × 2 = 0 + 0.937 255 859 374 999 999 999 336 491 725 619 2;
  • 35) 0.937 255 859 374 999 999 999 336 491 725 619 2 × 2 = 1 + 0.874 511 718 749 999 999 998 672 983 451 238 4;
  • 36) 0.874 511 718 749 999 999 998 672 983 451 238 4 × 2 = 1 + 0.749 023 437 499 999 999 997 345 966 902 476 8;
  • 37) 0.749 023 437 499 999 999 997 345 966 902 476 8 × 2 = 1 + 0.498 046 874 999 999 999 994 691 933 804 953 6;
  • 38) 0.498 046 874 999 999 999 994 691 933 804 953 6 × 2 = 0 + 0.996 093 749 999 999 999 989 383 867 609 907 2;
  • 39) 0.996 093 749 999 999 999 989 383 867 609 907 2 × 2 = 1 + 0.992 187 499 999 999 999 978 767 735 219 814 4;
  • 40) 0.992 187 499 999 999 999 978 767 735 219 814 4 × 2 = 1 + 0.984 374 999 999 999 999 957 535 470 439 628 8;
  • 41) 0.984 374 999 999 999 999 957 535 470 439 628 8 × 2 = 1 + 0.968 749 999 999 999 999 915 070 940 879 257 6;
  • 42) 0.968 749 999 999 999 999 915 070 940 879 257 6 × 2 = 1 + 0.937 499 999 999 999 999 830 141 881 758 515 2;
  • 43) 0.937 499 999 999 999 999 830 141 881 758 515 2 × 2 = 1 + 0.874 999 999 999 999 999 660 283 763 517 030 4;
  • 44) 0.874 999 999 999 999 999 660 283 763 517 030 4 × 2 = 1 + 0.749 999 999 999 999 999 320 567 527 034 060 8;
  • 45) 0.749 999 999 999 999 999 320 567 527 034 060 8 × 2 = 1 + 0.499 999 999 999 999 998 641 135 054 068 121 6;
  • 46) 0.499 999 999 999 999 998 641 135 054 068 121 6 × 2 = 0 + 0.999 999 999 999 999 997 282 270 108 136 243 2;

We didn't get any fractional part that was equal to zero. But we had enough iterations (over Mantissa limit) and at least one integer that was different from zero => FULL STOP (Losing precision - the converted number we get in the end will be just a very good approximation of the initial one).


4. Construct the base 2 representation of the fractional part of the number.

Take all the integer parts of the multiplying operations, starting from the top of the constructed list above:


0.000 000 171 999 985 809 634 381 439 536 771 3(10) =


0.0000 0000 0000 0000 0000 0010 1110 0010 1011 1011 1111 10(2)

5. Positive number before normalization:

0.000 000 171 999 985 809 634 381 439 536 771 3(10) =


0.0000 0000 0000 0000 0000 0010 1110 0010 1011 1011 1111 10(2)

6. Normalize the binary representation of the number.

Shift the decimal mark 23 positions to the right, so that only one non zero digit remains to the left of it:


0.000 000 171 999 985 809 634 381 439 536 771 3(10) =


0.0000 0000 0000 0000 0000 0010 1110 0010 1011 1011 1111 10(2) =


0.0000 0000 0000 0000 0000 0010 1110 0010 1011 1011 1111 10(2) × 20 =


1.0111 0001 0101 1101 1111 110(2) × 2-23


7. Up to this moment, there are the following elements that would feed into the 32 bit single precision IEEE 754 binary floating point representation:

Sign 0 (a positive number)


Exponent (unadjusted): -23


Mantissa (not normalized):
1.0111 0001 0101 1101 1111 110


8. Adjust the exponent.

Use the 8 bit excess/bias notation:


Exponent (adjusted) =


Exponent (unadjusted) + 2(8-1) - 1 =


-23 + 2(8-1) - 1 =


(-23 + 127)(10) =


104(10)


9. Convert the adjusted exponent from the decimal (base 10) to 8 bit binary.

Use the same technique of repeatedly dividing by 2:


  • division = quotient + remainder;
  • 104 ÷ 2 = 52 + 0;
  • 52 ÷ 2 = 26 + 0;
  • 26 ÷ 2 = 13 + 0;
  • 13 ÷ 2 = 6 + 1;
  • 6 ÷ 2 = 3 + 0;
  • 3 ÷ 2 = 1 + 1;
  • 1 ÷ 2 = 0 + 1;

10. Construct the base 2 representation of the adjusted exponent.

Take all the remainders starting from the bottom of the list constructed above.


Exponent (adjusted) =


104(10) =


0110 1000(2)


11. Normalize the mantissa.

a) Remove the leading (the leftmost) bit, since it's allways 1, and the decimal point, if the case.


b) Adjust its length to 23 bits, only if necessary (not the case here).


Mantissa (normalized) =


1. 011 1000 1010 1110 1111 1110 =


011 1000 1010 1110 1111 1110


12. The three elements that make up the number's 32 bit single precision IEEE 754 binary floating point representation:

Sign (1 bit) =
0 (a positive number)


Exponent (8 bits) =
0110 1000


Mantissa (23 bits) =
011 1000 1010 1110 1111 1110


Decimal number 0.000 000 171 999 985 809 634 381 439 536 771 3 converted to 32 bit single precision IEEE 754 binary floating point representation:

0 - 0110 1000 - 011 1000 1010 1110 1111 1110


How to convert decimal numbers from base ten to 32 bit single precision IEEE 754 binary floating point standard

Follow the steps below to convert a base 10 decimal number to 32 bit single precision IEEE 754 binary floating point:

  • 1. If the number to be converted is negative, start with its the positive version.
  • 2. First convert the integer part. Divide repeatedly by 2 the base ten positive representation of the integer number that is to be converted to binary, until we get a quotient that is equal to zero, keeping track of each remainder.
  • 3. Construct the base 2 representation of the positive integer part of the number, by taking all the remainders of the previous dividing operations, starting from the bottom of the list constructed above. Thus, the last remainder of the divisions becomes the first symbol (the leftmost) of the base two number, while the first remainder becomes the last symbol (the rightmost).
  • 4. Then convert the fractional part. Multiply the number repeatedly by 2, until we get a fractional part that is equal to zero, keeping track of each integer part of the results.
  • 5. Construct the base 2 representation of the fractional part of the number by taking all the integer parts of the previous multiplying operations, starting from the top of the constructed list above (they should appear in the binary representation, from left to right, in the order they have been calculated).
  • 6. Normalize the binary representation of the number, by shifting the decimal point (or if you prefer, the decimal mark) "n" positions either to the left or to the right, so that only one non zero digit remains to the left of the decimal point.
  • 7. Adjust the exponent in 8 bit excess/bias notation and then convert it from decimal (base 10) to 8 bit binary, by using the same technique of repeatedly dividing by 2, as shown above:
    Exponent (adjusted) = Exponent (unadjusted) + 2(8-1) - 1
  • 8. Normalize mantissa, remove the leading (leftmost) bit, since it's allways '1' (and the decimal sign if the case) and adjust its length to 23 bits, either by removing the excess bits from the right (losing precision...) or by adding extra '0' bits to the right.
  • 9. Sign (it takes 1 bit) is either 1 for a negative or 0 for a positive number.

Example: convert the negative number -25.347 from decimal system (base ten) to 32 bit single precision IEEE 754 binary floating point:

  • 1. Start with the positive version of the number:

    |-25.347| = 25.347

  • 2. First convert the integer part, 25. Divide it repeatedly by 2, keeping track of each remainder, until we get a quotient that is equal to zero:
    • division = quotient + remainder;
    • 25 ÷ 2 = 12 + 1;
    • 12 ÷ 2 = 6 + 0;
    • 6 ÷ 2 = 3 + 0;
    • 3 ÷ 2 = 1 + 1;
    • 1 ÷ 2 = 0 + 1;
    • We have encountered a quotient that is ZERO => FULL STOP
  • 3. Construct the base 2 representation of the integer part of the number by taking all the remainders of the previous dividing operations, starting from the bottom of the list constructed above:

    25(10) = 1 1001(2)

  • 4. Then convert the fractional part, 0.347. Multiply repeatedly by 2, keeping track of each integer part of the results, until we get a fractional part that is equal to zero:
    • #) multiplying = integer + fractional part;
    • 1) 0.347 × 2 = 0 + 0.694;
    • 2) 0.694 × 2 = 1 + 0.388;
    • 3) 0.388 × 2 = 0 + 0.776;
    • 4) 0.776 × 2 = 1 + 0.552;
    • 5) 0.552 × 2 = 1 + 0.104;
    • 6) 0.104 × 2 = 0 + 0.208;
    • 7) 0.208 × 2 = 0 + 0.416;
    • 8) 0.416 × 2 = 0 + 0.832;
    • 9) 0.832 × 2 = 1 + 0.664;
    • 10) 0.664 × 2 = 1 + 0.328;
    • 11) 0.328 × 2 = 0 + 0.656;
    • 12) 0.656 × 2 = 1 + 0.312;
    • 13) 0.312 × 2 = 0 + 0.624;
    • 14) 0.624 × 2 = 1 + 0.248;
    • 15) 0.248 × 2 = 0 + 0.496;
    • 16) 0.496 × 2 = 0 + 0.992;
    • 17) 0.992 × 2 = 1 + 0.984;
    • 18) 0.984 × 2 = 1 + 0.968;
    • 19) 0.968 × 2 = 1 + 0.936;
    • 20) 0.936 × 2 = 1 + 0.872;
    • 21) 0.872 × 2 = 1 + 0.744;
    • 22) 0.744 × 2 = 1 + 0.488;
    • 23) 0.488 × 2 = 0 + 0.976;
    • 24) 0.976 × 2 = 1 + 0.952;
    • We didn't get any fractional part that was equal to zero. But we had enough iterations (over Mantissa limit = 23) and at least one integer part that was different from zero => FULL STOP (losing precision...).
  • 5. Construct the base 2 representation of the fractional part of the number, by taking all the integer parts of the previous multiplying operations, starting from the top of the constructed list above:

    0.347(10) = 0.0101 1000 1101 0100 1111 1101(2)

  • 6. Summarizing - the positive number before normalization:

    25.347(10) = 1 1001.0101 1000 1101 0100 1111 1101(2)

  • 7. Normalize the binary representation of the number, shifting the decimal point 4 positions to the left so that only one non-zero digit stays to the left of the decimal point:

    25.347(10) =
    1 1001.0101 1000 1101 0100 1111 1101(2) =
    1 1001.0101 1000 1101 0100 1111 1101(2) × 20 =
    1.1001 0101 1000 1101 0100 1111 1101(2) × 24

  • 8. Up to this moment, there are the following elements that would feed into the 32 bit single precision IEEE 754 binary floating point:

    Sign: 1 (a negative number)

    Exponent (unadjusted): 4

    Mantissa (not-normalized): 1.1001 0101 1000 1101 0100 1111 1101

  • 9. Adjust the exponent in 8 bit excess/bias notation and then convert it from decimal (base 10) to 8 bit binary (base 2), by using the same technique of repeatedly dividing it by 2, as already demonstrated above:

    Exponent (adjusted) = Exponent (unadjusted) + 2(8-1) - 1 = (4 + 127)(10) = 131(10) =
    1000 0011(2)

  • 10. Normalize the mantissa, remove the leading (leftmost) bit, since it's allways '1' (and the decimal point) and adjust its length to 23 bits, by removing the excess bits from the right (losing precision...):

    Mantissa (not-normalized): 1.1001 0101 1000 1101 0100 1111 1101

    Mantissa (normalized): 100 1010 1100 0110 1010 0111

  • Conclusion:

    Sign (1 bit) = 1 (a negative number)

    Exponent (8 bits) = 1000 0011

    Mantissa (23 bits) = 100 1010 1100 0110 1010 0111

  • Number -25.347, converted from the decimal system (base 10) to 32 bit single precision IEEE 754 binary floating point =
    1 - 1000 0011 - 100 1010 1100 0110 1010 0111