-0.000 000 001 231 538 823 12 Converted to 64 Bit Double Precision IEEE 754 Binary Floating Point Representation Standard

Convert decimal -0.000 000 001 231 538 823 12(10) to 64 bit double precision IEEE 754 binary floating point representation standard (1 bit for sign, 11 bits for exponent, 52 bits for mantissa)

What are the steps to convert decimal number
-0.000 000 001 231 538 823 12(10) to 64 bit double precision IEEE 754 binary floating point representation (1 bit for sign, 11 bits for exponent, 52 bits for mantissa)

1. Start with the positive version of the number:

|-0.000 000 001 231 538 823 12| = 0.000 000 001 231 538 823 12


2. 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;

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.

0(10) =


0(2)


4. Convert to binary (base 2) the fractional part: 0.000 000 001 231 538 823 12.

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 001 231 538 823 12 × 2 = 0 + 0.000 000 002 463 077 646 24;
  • 2) 0.000 000 002 463 077 646 24 × 2 = 0 + 0.000 000 004 926 155 292 48;
  • 3) 0.000 000 004 926 155 292 48 × 2 = 0 + 0.000 000 009 852 310 584 96;
  • 4) 0.000 000 009 852 310 584 96 × 2 = 0 + 0.000 000 019 704 621 169 92;
  • 5) 0.000 000 019 704 621 169 92 × 2 = 0 + 0.000 000 039 409 242 339 84;
  • 6) 0.000 000 039 409 242 339 84 × 2 = 0 + 0.000 000 078 818 484 679 68;
  • 7) 0.000 000 078 818 484 679 68 × 2 = 0 + 0.000 000 157 636 969 359 36;
  • 8) 0.000 000 157 636 969 359 36 × 2 = 0 + 0.000 000 315 273 938 718 72;
  • 9) 0.000 000 315 273 938 718 72 × 2 = 0 + 0.000 000 630 547 877 437 44;
  • 10) 0.000 000 630 547 877 437 44 × 2 = 0 + 0.000 001 261 095 754 874 88;
  • 11) 0.000 001 261 095 754 874 88 × 2 = 0 + 0.000 002 522 191 509 749 76;
  • 12) 0.000 002 522 191 509 749 76 × 2 = 0 + 0.000 005 044 383 019 499 52;
  • 13) 0.000 005 044 383 019 499 52 × 2 = 0 + 0.000 010 088 766 038 999 04;
  • 14) 0.000 010 088 766 038 999 04 × 2 = 0 + 0.000 020 177 532 077 998 08;
  • 15) 0.000 020 177 532 077 998 08 × 2 = 0 + 0.000 040 355 064 155 996 16;
  • 16) 0.000 040 355 064 155 996 16 × 2 = 0 + 0.000 080 710 128 311 992 32;
  • 17) 0.000 080 710 128 311 992 32 × 2 = 0 + 0.000 161 420 256 623 984 64;
  • 18) 0.000 161 420 256 623 984 64 × 2 = 0 + 0.000 322 840 513 247 969 28;
  • 19) 0.000 322 840 513 247 969 28 × 2 = 0 + 0.000 645 681 026 495 938 56;
  • 20) 0.000 645 681 026 495 938 56 × 2 = 0 + 0.001 291 362 052 991 877 12;
  • 21) 0.001 291 362 052 991 877 12 × 2 = 0 + 0.002 582 724 105 983 754 24;
  • 22) 0.002 582 724 105 983 754 24 × 2 = 0 + 0.005 165 448 211 967 508 48;
  • 23) 0.005 165 448 211 967 508 48 × 2 = 0 + 0.010 330 896 423 935 016 96;
  • 24) 0.010 330 896 423 935 016 96 × 2 = 0 + 0.020 661 792 847 870 033 92;
  • 25) 0.020 661 792 847 870 033 92 × 2 = 0 + 0.041 323 585 695 740 067 84;
  • 26) 0.041 323 585 695 740 067 84 × 2 = 0 + 0.082 647 171 391 480 135 68;
  • 27) 0.082 647 171 391 480 135 68 × 2 = 0 + 0.165 294 342 782 960 271 36;
  • 28) 0.165 294 342 782 960 271 36 × 2 = 0 + 0.330 588 685 565 920 542 72;
  • 29) 0.330 588 685 565 920 542 72 × 2 = 0 + 0.661 177 371 131 841 085 44;
  • 30) 0.661 177 371 131 841 085 44 × 2 = 1 + 0.322 354 742 263 682 170 88;
  • 31) 0.322 354 742 263 682 170 88 × 2 = 0 + 0.644 709 484 527 364 341 76;
  • 32) 0.644 709 484 527 364 341 76 × 2 = 1 + 0.289 418 969 054 728 683 52;
  • 33) 0.289 418 969 054 728 683 52 × 2 = 0 + 0.578 837 938 109 457 367 04;
  • 34) 0.578 837 938 109 457 367 04 × 2 = 1 + 0.157 675 876 218 914 734 08;
  • 35) 0.157 675 876 218 914 734 08 × 2 = 0 + 0.315 351 752 437 829 468 16;
  • 36) 0.315 351 752 437 829 468 16 × 2 = 0 + 0.630 703 504 875 658 936 32;
  • 37) 0.630 703 504 875 658 936 32 × 2 = 1 + 0.261 407 009 751 317 872 64;
  • 38) 0.261 407 009 751 317 872 64 × 2 = 0 + 0.522 814 019 502 635 745 28;
  • 39) 0.522 814 019 502 635 745 28 × 2 = 1 + 0.045 628 039 005 271 490 56;
  • 40) 0.045 628 039 005 271 490 56 × 2 = 0 + 0.091 256 078 010 542 981 12;
  • 41) 0.091 256 078 010 542 981 12 × 2 = 0 + 0.182 512 156 021 085 962 24;
  • 42) 0.182 512 156 021 085 962 24 × 2 = 0 + 0.365 024 312 042 171 924 48;
  • 43) 0.365 024 312 042 171 924 48 × 2 = 0 + 0.730 048 624 084 343 848 96;
  • 44) 0.730 048 624 084 343 848 96 × 2 = 1 + 0.460 097 248 168 687 697 92;
  • 45) 0.460 097 248 168 687 697 92 × 2 = 0 + 0.920 194 496 337 375 395 84;
  • 46) 0.920 194 496 337 375 395 84 × 2 = 1 + 0.840 388 992 674 750 791 68;
  • 47) 0.840 388 992 674 750 791 68 × 2 = 1 + 0.680 777 985 349 501 583 36;
  • 48) 0.680 777 985 349 501 583 36 × 2 = 1 + 0.361 555 970 699 003 166 72;
  • 49) 0.361 555 970 699 003 166 72 × 2 = 0 + 0.723 111 941 398 006 333 44;
  • 50) 0.723 111 941 398 006 333 44 × 2 = 1 + 0.446 223 882 796 012 666 88;
  • 51) 0.446 223 882 796 012 666 88 × 2 = 0 + 0.892 447 765 592 025 333 76;
  • 52) 0.892 447 765 592 025 333 76 × 2 = 1 + 0.784 895 531 184 050 667 52;
  • 53) 0.784 895 531 184 050 667 52 × 2 = 1 + 0.569 791 062 368 101 335 04;
  • 54) 0.569 791 062 368 101 335 04 × 2 = 1 + 0.139 582 124 736 202 670 08;
  • 55) 0.139 582 124 736 202 670 08 × 2 = 0 + 0.279 164 249 472 405 340 16;
  • 56) 0.279 164 249 472 405 340 16 × 2 = 0 + 0.558 328 498 944 810 680 32;
  • 57) 0.558 328 498 944 810 680 32 × 2 = 1 + 0.116 656 997 889 621 360 64;
  • 58) 0.116 656 997 889 621 360 64 × 2 = 0 + 0.233 313 995 779 242 721 28;
  • 59) 0.233 313 995 779 242 721 28 × 2 = 0 + 0.466 627 991 558 485 442 56;
  • 60) 0.466 627 991 558 485 442 56 × 2 = 0 + 0.933 255 983 116 970 885 12;
  • 61) 0.933 255 983 116 970 885 12 × 2 = 1 + 0.866 511 966 233 941 770 24;
  • 62) 0.866 511 966 233 941 770 24 × 2 = 1 + 0.733 023 932 467 883 540 48;
  • 63) 0.733 023 932 467 883 540 48 × 2 = 1 + 0.466 047 864 935 767 080 96;
  • 64) 0.466 047 864 935 767 080 96 × 2 = 0 + 0.932 095 729 871 534 161 92;
  • 65) 0.932 095 729 871 534 161 92 × 2 = 1 + 0.864 191 459 743 068 323 84;
  • 66) 0.864 191 459 743 068 323 84 × 2 = 1 + 0.728 382 919 486 136 647 68;
  • 67) 0.728 382 919 486 136 647 68 × 2 = 1 + 0.456 765 838 972 273 295 36;
  • 68) 0.456 765 838 972 273 295 36 × 2 = 0 + 0.913 531 677 944 546 590 72;
  • 69) 0.913 531 677 944 546 590 72 × 2 = 1 + 0.827 063 355 889 093 181 44;
  • 70) 0.827 063 355 889 093 181 44 × 2 = 1 + 0.654 126 711 778 186 362 88;
  • 71) 0.654 126 711 778 186 362 88 × 2 = 1 + 0.308 253 423 556 372 725 76;
  • 72) 0.308 253 423 556 372 725 76 × 2 = 0 + 0.616 506 847 112 745 451 52;
  • 73) 0.616 506 847 112 745 451 52 × 2 = 1 + 0.233 013 694 225 490 903 04;
  • 74) 0.233 013 694 225 490 903 04 × 2 = 0 + 0.466 027 388 450 981 806 08;
  • 75) 0.466 027 388 450 981 806 08 × 2 = 0 + 0.932 054 776 901 963 612 16;
  • 76) 0.932 054 776 901 963 612 16 × 2 = 1 + 0.864 109 553 803 927 224 32;
  • 77) 0.864 109 553 803 927 224 32 × 2 = 1 + 0.728 219 107 607 854 448 64;
  • 78) 0.728 219 107 607 854 448 64 × 2 = 1 + 0.456 438 215 215 708 897 28;
  • 79) 0.456 438 215 215 708 897 28 × 2 = 0 + 0.912 876 430 431 417 794 56;
  • 80) 0.912 876 430 431 417 794 56 × 2 = 1 + 0.825 752 860 862 835 589 12;
  • 81) 0.825 752 860 862 835 589 12 × 2 = 1 + 0.651 505 721 725 671 178 24;
  • 82) 0.651 505 721 725 671 178 24 × 2 = 1 + 0.303 011 443 451 342 356 48;

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.000 000 001 231 538 823 12(10) =


0.0000 0000 0000 0000 0000 0000 0000 0101 0100 1010 0001 0111 0101 1100 1000 1110 1110 1110 1001 1101 11(2)

6. Positive number before normalization:

0.000 000 001 231 538 823 12(10) =


0.0000 0000 0000 0000 0000 0000 0000 0101 0100 1010 0001 0111 0101 1100 1000 1110 1110 1110 1001 1101 11(2)

7. Normalize the binary representation of the number.

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


0.000 000 001 231 538 823 12(10) =


0.0000 0000 0000 0000 0000 0000 0000 0101 0100 1010 0001 0111 0101 1100 1000 1110 1110 1110 1001 1101 11(2) =


0.0000 0000 0000 0000 0000 0000 0000 0101 0100 1010 0001 0111 0101 1100 1000 1110 1110 1110 1001 1101 11(2) × 20 =


1.0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111(2) × 2-30


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

Sign 1 (a negative number)


Exponent (unadjusted): -30


Mantissa (not normalized):
1.0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111


9. Adjust the exponent.

Use the 11 bit excess/bias notation:


Exponent (adjusted) =


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


-30 + 2(11-1) - 1 =


(-30 + 1 023)(10) =


993(10)


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

Use the same technique of repeatedly dividing by 2:


  • division = quotient + remainder;
  • 993 ÷ 2 = 496 + 1;
  • 496 ÷ 2 = 248 + 0;
  • 248 ÷ 2 = 124 + 0;
  • 124 ÷ 2 = 62 + 0;
  • 62 ÷ 2 = 31 + 0;
  • 31 ÷ 2 = 15 + 1;
  • 15 ÷ 2 = 7 + 1;
  • 7 ÷ 2 = 3 + 1;
  • 3 ÷ 2 = 1 + 1;
  • 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) =


993(10) =


011 1110 0001(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 52 bits, only if necessary (not the case here).


Mantissa (normalized) =


1. 0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111 =


0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111


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

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


Exponent (11 bits) =
011 1110 0001


Mantissa (52 bits) =
0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111


Decimal number -0.000 000 001 231 538 823 12 converted to 64 bit double precision IEEE 754 binary floating point representation:

1 - 011 1110 0001 - 0101 0010 1000 0101 1101 0111 0010 0011 1011 1011 1010 0111 0111

How to convert numbers from the decimal system (base ten) to 64 bit double precision IEEE 754 binary floating point standard

Follow the steps below to convert a base 10 decimal number to 64 bit double 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 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 from the previous 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 multiplying operations, starting from the top of the list constructed 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, shifting the decimal mark (the decimal point) "n" positions either to the left, or to the right, so that only one non zero digit remains to the left of the decimal mark.
  • 7. Adjust the exponent in 11 bit excess/bias notation and then convert it from decimal (base 10) to 11 bit binary, by using the same technique of repeatedly dividing by 2, as shown above:
    Exponent (adjusted) = Exponent (unadjusted) + 2(11-1) - 1
  • 8. Normalize mantissa, remove the leading (leftmost) bit, since it's allways '1' (and the decimal mark, if the case) and adjust its length to 52 bits, either by removing the excess bits from the right (losing precision...) or by adding extra bits set on '0' 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 -31.640 215 from the decimal system (base ten) to 64 bit double precision IEEE 754 binary floating point:

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

    |-31.640 215| = 31.640 215

  • 2. First convert the integer part, 31. Divide it repeatedly by 2, keeping track of each remainder, until we get a quotient that is equal to zero:
    • division = quotient + remainder;
    • 31 ÷ 2 = 15 + 1;
    • 15 ÷ 2 = 7 + 1;
    • 7 ÷ 2 = 3 + 1;
    • 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:

    31(10) = 1 1111(2)

  • 4. Then, convert the fractional part, 0.640 215. 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.640 215 × 2 = 1 + 0.280 43;
    • 2) 0.280 43 × 2 = 0 + 0.560 86;
    • 3) 0.560 86 × 2 = 1 + 0.121 72;
    • 4) 0.121 72 × 2 = 0 + 0.243 44;
    • 5) 0.243 44 × 2 = 0 + 0.486 88;
    • 6) 0.486 88 × 2 = 0 + 0.973 76;
    • 7) 0.973 76 × 2 = 1 + 0.947 52;
    • 8) 0.947 52 × 2 = 1 + 0.895 04;
    • 9) 0.895 04 × 2 = 1 + 0.790 08;
    • 10) 0.790 08 × 2 = 1 + 0.580 16;
    • 11) 0.580 16 × 2 = 1 + 0.160 32;
    • 12) 0.160 32 × 2 = 0 + 0.320 64;
    • 13) 0.320 64 × 2 = 0 + 0.641 28;
    • 14) 0.641 28 × 2 = 1 + 0.282 56;
    • 15) 0.282 56 × 2 = 0 + 0.565 12;
    • 16) 0.565 12 × 2 = 1 + 0.130 24;
    • 17) 0.130 24 × 2 = 0 + 0.260 48;
    • 18) 0.260 48 × 2 = 0 + 0.520 96;
    • 19) 0.520 96 × 2 = 1 + 0.041 92;
    • 20) 0.041 92 × 2 = 0 + 0.083 84;
    • 21) 0.083 84 × 2 = 0 + 0.167 68;
    • 22) 0.167 68 × 2 = 0 + 0.335 36;
    • 23) 0.335 36 × 2 = 0 + 0.670 72;
    • 24) 0.670 72 × 2 = 1 + 0.341 44;
    • 25) 0.341 44 × 2 = 0 + 0.682 88;
    • 26) 0.682 88 × 2 = 1 + 0.365 76;
    • 27) 0.365 76 × 2 = 0 + 0.731 52;
    • 28) 0.731 52 × 2 = 1 + 0.463 04;
    • 29) 0.463 04 × 2 = 0 + 0.926 08;
    • 30) 0.926 08 × 2 = 1 + 0.852 16;
    • 31) 0.852 16 × 2 = 1 + 0.704 32;
    • 32) 0.704 32 × 2 = 1 + 0.408 64;
    • 33) 0.408 64 × 2 = 0 + 0.817 28;
    • 34) 0.817 28 × 2 = 1 + 0.634 56;
    • 35) 0.634 56 × 2 = 1 + 0.269 12;
    • 36) 0.269 12 × 2 = 0 + 0.538 24;
    • 37) 0.538 24 × 2 = 1 + 0.076 48;
    • 38) 0.076 48 × 2 = 0 + 0.152 96;
    • 39) 0.152 96 × 2 = 0 + 0.305 92;
    • 40) 0.305 92 × 2 = 0 + 0.611 84;
    • 41) 0.611 84 × 2 = 1 + 0.223 68;
    • 42) 0.223 68 × 2 = 0 + 0.447 36;
    • 43) 0.447 36 × 2 = 0 + 0.894 72;
    • 44) 0.894 72 × 2 = 1 + 0.789 44;
    • 45) 0.789 44 × 2 = 1 + 0.578 88;
    • 46) 0.578 88 × 2 = 1 + 0.157 76;
    • 47) 0.157 76 × 2 = 0 + 0.315 52;
    • 48) 0.315 52 × 2 = 0 + 0.631 04;
    • 49) 0.631 04 × 2 = 1 + 0.262 08;
    • 50) 0.262 08 × 2 = 0 + 0.524 16;
    • 51) 0.524 16 × 2 = 1 + 0.048 32;
    • 52) 0.048 32 × 2 = 0 + 0.096 64;
    • 53) 0.096 64 × 2 = 0 + 0.193 28;
    • We didn't get any fractional part that was equal to zero. But we had enough iterations (over Mantissa limit = 52) 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.640 215(10) = 0.1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2)

  • 6. Summarizing - the positive number before normalization:

    31.640 215(10) = 1 1111.1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2)

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

    31.640 215(10) =
    1 1111.1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) =
    1 1111.1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) × 20 =
    1.1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0(2) × 24

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

    Sign: 1 (a negative number)

    Exponent (unadjusted): 4

    Mantissa (not-normalized): 1.1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0

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

    Exponent (adjusted) = Exponent (unadjusted) + 2(11-1) - 1 = (4 + 1023)(10) = 1027(10) =
    100 0000 0011(2)

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

    Mantissa (not-normalized): 1.1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100 1010 0

    Mantissa (normalized): 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100

  • Conclusion:

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

    Exponent (8 bits) = 100 0000 0011

    Mantissa (52 bits) = 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100

  • Number -31.640 215, converted from decimal system (base 10) to 64 bit double precision IEEE 754 binary floating point =
    1 - 100 0000 0011 - 1111 1010 0011 1110 0101 0010 0001 0101 0111 0110 1000 1001 1100