-129 348 792 183 749 282.912 873 498 273 849 281 2 Converted to 32 Bit Single Precision IEEE 754 Binary Floating Point Representation Standard

Convert decimal -129 348 792 183 749 282.912 873 498 273 849 281 2(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
-129 348 792 183 749 282.912 873 498 273 849 281 2(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. Start with the positive version of the number:

|-129 348 792 183 749 282.912 873 498 273 849 281 2| = 129 348 792 183 749 282.912 873 498 273 849 281 2


2. First, convert to binary (in base 2) the integer part: 129 348 792 183 749 282.
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;
  • 129 348 792 183 749 282 ÷ 2 = 64 674 396 091 874 641 + 0;
  • 64 674 396 091 874 641 ÷ 2 = 32 337 198 045 937 320 + 1;
  • 32 337 198 045 937 320 ÷ 2 = 16 168 599 022 968 660 + 0;
  • 16 168 599 022 968 660 ÷ 2 = 8 084 299 511 484 330 + 0;
  • 8 084 299 511 484 330 ÷ 2 = 4 042 149 755 742 165 + 0;
  • 4 042 149 755 742 165 ÷ 2 = 2 021 074 877 871 082 + 1;
  • 2 021 074 877 871 082 ÷ 2 = 1 010 537 438 935 541 + 0;
  • 1 010 537 438 935 541 ÷ 2 = 505 268 719 467 770 + 1;
  • 505 268 719 467 770 ÷ 2 = 252 634 359 733 885 + 0;
  • 252 634 359 733 885 ÷ 2 = 126 317 179 866 942 + 1;
  • 126 317 179 866 942 ÷ 2 = 63 158 589 933 471 + 0;
  • 63 158 589 933 471 ÷ 2 = 31 579 294 966 735 + 1;
  • 31 579 294 966 735 ÷ 2 = 15 789 647 483 367 + 1;
  • 15 789 647 483 367 ÷ 2 = 7 894 823 741 683 + 1;
  • 7 894 823 741 683 ÷ 2 = 3 947 411 870 841 + 1;
  • 3 947 411 870 841 ÷ 2 = 1 973 705 935 420 + 1;
  • 1 973 705 935 420 ÷ 2 = 986 852 967 710 + 0;
  • 986 852 967 710 ÷ 2 = 493 426 483 855 + 0;
  • 493 426 483 855 ÷ 2 = 246 713 241 927 + 1;
  • 246 713 241 927 ÷ 2 = 123 356 620 963 + 1;
  • 123 356 620 963 ÷ 2 = 61 678 310 481 + 1;
  • 61 678 310 481 ÷ 2 = 30 839 155 240 + 1;
  • 30 839 155 240 ÷ 2 = 15 419 577 620 + 0;
  • 15 419 577 620 ÷ 2 = 7 709 788 810 + 0;
  • 7 709 788 810 ÷ 2 = 3 854 894 405 + 0;
  • 3 854 894 405 ÷ 2 = 1 927 447 202 + 1;
  • 1 927 447 202 ÷ 2 = 963 723 601 + 0;
  • 963 723 601 ÷ 2 = 481 861 800 + 1;
  • 481 861 800 ÷ 2 = 240 930 900 + 0;
  • 240 930 900 ÷ 2 = 120 465 450 + 0;
  • 120 465 450 ÷ 2 = 60 232 725 + 0;
  • 60 232 725 ÷ 2 = 30 116 362 + 1;
  • 30 116 362 ÷ 2 = 15 058 181 + 0;
  • 15 058 181 ÷ 2 = 7 529 090 + 1;
  • 7 529 090 ÷ 2 = 3 764 545 + 0;
  • 3 764 545 ÷ 2 = 1 882 272 + 1;
  • 1 882 272 ÷ 2 = 941 136 + 0;
  • 941 136 ÷ 2 = 470 568 + 0;
  • 470 568 ÷ 2 = 235 284 + 0;
  • 235 284 ÷ 2 = 117 642 + 0;
  • 117 642 ÷ 2 = 58 821 + 0;
  • 58 821 ÷ 2 = 29 410 + 1;
  • 29 410 ÷ 2 = 14 705 + 0;
  • 14 705 ÷ 2 = 7 352 + 1;
  • 7 352 ÷ 2 = 3 676 + 0;
  • 3 676 ÷ 2 = 1 838 + 0;
  • 1 838 ÷ 2 = 919 + 0;
  • 919 ÷ 2 = 459 + 1;
  • 459 ÷ 2 = 229 + 1;
  • 229 ÷ 2 = 114 + 1;
  • 114 ÷ 2 = 57 + 0;
  • 57 ÷ 2 = 28 + 1;
  • 28 ÷ 2 = 14 + 0;
  • 14 ÷ 2 = 7 + 0;
  • 7 ÷ 2 = 3 + 1;
  • 3 ÷ 2 = 1 + 1;
  • 1 ÷ 2 = 0 + 1;

3. 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.

129 348 792 183 749 282(10) =


1 1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010(2)


4. Convert to binary (base 2) the fractional part: 0.912 873 498 273 849 281 2.

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.912 873 498 273 849 281 2 × 2 = 1 + 0.825 746 996 547 698 562 4;
  • 2) 0.825 746 996 547 698 562 4 × 2 = 1 + 0.651 493 993 095 397 124 8;
  • 3) 0.651 493 993 095 397 124 8 × 2 = 1 + 0.302 987 986 190 794 249 6;
  • 4) 0.302 987 986 190 794 249 6 × 2 = 0 + 0.605 975 972 381 588 499 2;
  • 5) 0.605 975 972 381 588 499 2 × 2 = 1 + 0.211 951 944 763 176 998 4;
  • 6) 0.211 951 944 763 176 998 4 × 2 = 0 + 0.423 903 889 526 353 996 8;
  • 7) 0.423 903 889 526 353 996 8 × 2 = 0 + 0.847 807 779 052 707 993 6;
  • 8) 0.847 807 779 052 707 993 6 × 2 = 1 + 0.695 615 558 105 415 987 2;
  • 9) 0.695 615 558 105 415 987 2 × 2 = 1 + 0.391 231 116 210 831 974 4;
  • 10) 0.391 231 116 210 831 974 4 × 2 = 0 + 0.782 462 232 421 663 948 8;
  • 11) 0.782 462 232 421 663 948 8 × 2 = 1 + 0.564 924 464 843 327 897 6;
  • 12) 0.564 924 464 843 327 897 6 × 2 = 1 + 0.129 848 929 686 655 795 2;
  • 13) 0.129 848 929 686 655 795 2 × 2 = 0 + 0.259 697 859 373 311 590 4;
  • 14) 0.259 697 859 373 311 590 4 × 2 = 0 + 0.519 395 718 746 623 180 8;
  • 15) 0.519 395 718 746 623 180 8 × 2 = 1 + 0.038 791 437 493 246 361 6;
  • 16) 0.038 791 437 493 246 361 6 × 2 = 0 + 0.077 582 874 986 492 723 2;
  • 17) 0.077 582 874 986 492 723 2 × 2 = 0 + 0.155 165 749 972 985 446 4;
  • 18) 0.155 165 749 972 985 446 4 × 2 = 0 + 0.310 331 499 945 970 892 8;
  • 19) 0.310 331 499 945 970 892 8 × 2 = 0 + 0.620 662 999 891 941 785 6;
  • 20) 0.620 662 999 891 941 785 6 × 2 = 1 + 0.241 325 999 783 883 571 2;
  • 21) 0.241 325 999 783 883 571 2 × 2 = 0 + 0.482 651 999 567 767 142 4;
  • 22) 0.482 651 999 567 767 142 4 × 2 = 0 + 0.965 303 999 135 534 284 8;
  • 23) 0.965 303 999 135 534 284 8 × 2 = 1 + 0.930 607 998 271 068 569 6;
  • 24) 0.930 607 998 271 068 569 6 × 2 = 1 + 0.861 215 996 542 137 139 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).


5. 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.912 873 498 273 849 281 2(10) =


0.1110 1001 1011 0010 0001 0011(2)

6. Positive number before normalization:

129 348 792 183 749 282.912 873 498 273 849 281 2(10) =


1 1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010.1110 1001 1011 0010 0001 0011(2)

7. Normalize the binary representation of the number.

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


129 348 792 183 749 282.912 873 498 273 849 281 2(10) =


1 1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010.1110 1001 1011 0010 0001 0011(2) =


1 1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010.1110 1001 1011 0010 0001 0011(2) × 20 =


1.1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010 1110 1001 1011 0010 0001 0011(2) × 256


8. 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 1 (a negative number)


Exponent (unadjusted): 56


Mantissa (not normalized):
1.1100 1011 1000 1010 0000 1010 1000 1010 0011 1100 1111 1010 1010 0010 1110 1001 1011 0010 0001 0011


9. Adjust the exponent.

Use the 8 bit excess/bias notation:


Exponent (adjusted) =


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


56 + 2(8-1) - 1 =


(56 + 127)(10) =


183(10)


10. 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;
  • 183 ÷ 2 = 91 + 1;
  • 91 ÷ 2 = 45 + 1;
  • 45 ÷ 2 = 22 + 1;
  • 22 ÷ 2 = 11 + 0;
  • 11 ÷ 2 = 5 + 1;
  • 5 ÷ 2 = 2 + 1;
  • 2 ÷ 2 = 1 + 0;
  • 1 ÷ 2 = 0 + 1;

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

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


Exponent (adjusted) =


183(10) =


1011 0111(2)


12. 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, by removing the excess bits, from the right (if any of the excess bits is set on 1, we are losing precision...).


Mantissa (normalized) =


1. 110 0101 1100 0101 0000 0101 0 1000 1010 0011 1100 1111 1010 1010 0010 1110 1001 1011 0010 0001 0011 =


110 0101 1100 0101 0000 0101


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

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


Exponent (8 bits) =
1011 0111


Mantissa (23 bits) =
110 0101 1100 0101 0000 0101


Decimal number -129 348 792 183 749 282.912 873 498 273 849 281 2 converted to 32 bit single precision IEEE 754 binary floating point representation:

1 - 1011 0111 - 110 0101 1100 0101 0000 0101


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