0.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271 Converted to 32 Bit Single Precision IEEE 754 Binary Floating Point Representation Standard

Convert decimal 0.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271(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.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271(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.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271.

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.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271 × 2 = 0 + 0.224 769 003 246 982 472 479 309 474 914 695 147 247 296 545 694 949 494 542;
  • 2) 0.224 769 003 246 982 472 479 309 474 914 695 147 247 296 545 694 949 494 542 × 2 = 0 + 0.449 538 006 493 964 944 958 618 949 829 390 294 494 593 091 389 898 989 084;
  • 3) 0.449 538 006 493 964 944 958 618 949 829 390 294 494 593 091 389 898 989 084 × 2 = 0 + 0.899 076 012 987 929 889 917 237 899 658 780 588 989 186 182 779 797 978 168;
  • 4) 0.899 076 012 987 929 889 917 237 899 658 780 588 989 186 182 779 797 978 168 × 2 = 1 + 0.798 152 025 975 859 779 834 475 799 317 561 177 978 372 365 559 595 956 336;
  • 5) 0.798 152 025 975 859 779 834 475 799 317 561 177 978 372 365 559 595 956 336 × 2 = 1 + 0.596 304 051 951 719 559 668 951 598 635 122 355 956 744 731 119 191 912 672;
  • 6) 0.596 304 051 951 719 559 668 951 598 635 122 355 956 744 731 119 191 912 672 × 2 = 1 + 0.192 608 103 903 439 119 337 903 197 270 244 711 913 489 462 238 383 825 344;
  • 7) 0.192 608 103 903 439 119 337 903 197 270 244 711 913 489 462 238 383 825 344 × 2 = 0 + 0.385 216 207 806 878 238 675 806 394 540 489 423 826 978 924 476 767 650 688;
  • 8) 0.385 216 207 806 878 238 675 806 394 540 489 423 826 978 924 476 767 650 688 × 2 = 0 + 0.770 432 415 613 756 477 351 612 789 080 978 847 653 957 848 953 535 301 376;
  • 9) 0.770 432 415 613 756 477 351 612 789 080 978 847 653 957 848 953 535 301 376 × 2 = 1 + 0.540 864 831 227 512 954 703 225 578 161 957 695 307 915 697 907 070 602 752;
  • 10) 0.540 864 831 227 512 954 703 225 578 161 957 695 307 915 697 907 070 602 752 × 2 = 1 + 0.081 729 662 455 025 909 406 451 156 323 915 390 615 831 395 814 141 205 504;
  • 11) 0.081 729 662 455 025 909 406 451 156 323 915 390 615 831 395 814 141 205 504 × 2 = 0 + 0.163 459 324 910 051 818 812 902 312 647 830 781 231 662 791 628 282 411 008;
  • 12) 0.163 459 324 910 051 818 812 902 312 647 830 781 231 662 791 628 282 411 008 × 2 = 0 + 0.326 918 649 820 103 637 625 804 625 295 661 562 463 325 583 256 564 822 016;
  • 13) 0.326 918 649 820 103 637 625 804 625 295 661 562 463 325 583 256 564 822 016 × 2 = 0 + 0.653 837 299 640 207 275 251 609 250 591 323 124 926 651 166 513 129 644 032;
  • 14) 0.653 837 299 640 207 275 251 609 250 591 323 124 926 651 166 513 129 644 032 × 2 = 1 + 0.307 674 599 280 414 550 503 218 501 182 646 249 853 302 333 026 259 288 064;
  • 15) 0.307 674 599 280 414 550 503 218 501 182 646 249 853 302 333 026 259 288 064 × 2 = 0 + 0.615 349 198 560 829 101 006 437 002 365 292 499 706 604 666 052 518 576 128;
  • 16) 0.615 349 198 560 829 101 006 437 002 365 292 499 706 604 666 052 518 576 128 × 2 = 1 + 0.230 698 397 121 658 202 012 874 004 730 584 999 413 209 332 105 037 152 256;
  • 17) 0.230 698 397 121 658 202 012 874 004 730 584 999 413 209 332 105 037 152 256 × 2 = 0 + 0.461 396 794 243 316 404 025 748 009 461 169 998 826 418 664 210 074 304 512;
  • 18) 0.461 396 794 243 316 404 025 748 009 461 169 998 826 418 664 210 074 304 512 × 2 = 0 + 0.922 793 588 486 632 808 051 496 018 922 339 997 652 837 328 420 148 609 024;
  • 19) 0.922 793 588 486 632 808 051 496 018 922 339 997 652 837 328 420 148 609 024 × 2 = 1 + 0.845 587 176 973 265 616 102 992 037 844 679 995 305 674 656 840 297 218 048;
  • 20) 0.845 587 176 973 265 616 102 992 037 844 679 995 305 674 656 840 297 218 048 × 2 = 1 + 0.691 174 353 946 531 232 205 984 075 689 359 990 611 349 313 680 594 436 096;
  • 21) 0.691 174 353 946 531 232 205 984 075 689 359 990 611 349 313 680 594 436 096 × 2 = 1 + 0.382 348 707 893 062 464 411 968 151 378 719 981 222 698 627 361 188 872 192;
  • 22) 0.382 348 707 893 062 464 411 968 151 378 719 981 222 698 627 361 188 872 192 × 2 = 0 + 0.764 697 415 786 124 928 823 936 302 757 439 962 445 397 254 722 377 744 384;
  • 23) 0.764 697 415 786 124 928 823 936 302 757 439 962 445 397 254 722 377 744 384 × 2 = 1 + 0.529 394 831 572 249 857 647 872 605 514 879 924 890 794 509 444 755 488 768;
  • 24) 0.529 394 831 572 249 857 647 872 605 514 879 924 890 794 509 444 755 488 768 × 2 = 1 + 0.058 789 663 144 499 715 295 745 211 029 759 849 781 589 018 889 510 977 536;
  • 25) 0.058 789 663 144 499 715 295 745 211 029 759 849 781 589 018 889 510 977 536 × 2 = 0 + 0.117 579 326 288 999 430 591 490 422 059 519 699 563 178 037 779 021 955 072;
  • 26) 0.117 579 326 288 999 430 591 490 422 059 519 699 563 178 037 779 021 955 072 × 2 = 0 + 0.235 158 652 577 998 861 182 980 844 119 039 399 126 356 075 558 043 910 144;
  • 27) 0.235 158 652 577 998 861 182 980 844 119 039 399 126 356 075 558 043 910 144 × 2 = 0 + 0.470 317 305 155 997 722 365 961 688 238 078 798 252 712 151 116 087 820 288;

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.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271(10) =


0.0001 1100 1100 0101 0011 1011 000(2)

5. Positive number before normalization:

0.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271(10) =


0.0001 1100 1100 0101 0011 1011 000(2)

6. Normalize the binary representation of the number.

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


0.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271(10) =


0.0001 1100 1100 0101 0011 1011 000(2) =


0.0001 1100 1100 0101 0011 1011 000(2) × 20 =


1.1100 1100 0101 0011 1011 000(2) × 2-4


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): -4


Mantissa (not normalized):
1.1100 1100 0101 0011 1011 000


8. Adjust the exponent.

Use the 8 bit excess/bias notation:


Exponent (adjusted) =


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


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


(-4 + 127)(10) =


123(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;
  • 123 ÷ 2 = 61 + 1;
  • 61 ÷ 2 = 30 + 1;
  • 30 ÷ 2 = 15 + 0;
  • 15 ÷ 2 = 7 + 1;
  • 7 ÷ 2 = 3 + 1;
  • 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) =


123(10) =


0111 1011(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. 110 0110 0010 1001 1101 1000 =


110 0110 0010 1001 1101 1000


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) =
0111 1011


Mantissa (23 bits) =
110 0110 0010 1001 1101 1000


Decimal number 0.112 384 501 623 491 236 239 654 737 457 347 573 623 648 272 847 474 747 271 converted to 32 bit single precision IEEE 754 binary floating point representation:

0 - 0111 1011 - 110 0110 0010 1001 1101 1000


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