diff --git a/waif/frog.jpg b/waif/frog.jpg new file mode 100644 index 0000000..561810c --- /dev/null +++ b/waif/frog.jpg @@ -0,0 +1,1782 @@ +é*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ + /*********************************************************************************** + * IEEE 754-1985 64-BIT FLOATING POINT NUMBER * + * * + * 63 52 0 * + * SIGN (1) ->|.|...........|....................................................| * + * EXPONENT (11) MANTISSA (52) * + * * + * TOP NUMBERS ARE LOWER BOUNDS FOR EACH SEGMENT, LABELS ON BOTTOM AND LEFT SIDE * + * ARE DESCRIPTORS OF EACH SEGMENT FOLLOWED BY THE BIT COUNT IN EACH SEGMENT. * + *********************************************************************************** + * # SIGN SEGMENT # * + * * + * 0 IF POSITIVE, 1 IF NEGATIVE. * + *********************************************************************************** + * # EXPONENT SEGMENT # * + * * + * BINARY DECIMAL IS SHIFTED SUCH THAT THE NUMBER CAN BE WRITTEN USING PROPER * + * SCIENTIFIC NOTATION, EG. 1.1011 x 2^n WHERE n IS THE EXPONENTIAL SHIFT * + * NEEDED TO EXPRESS THE ORIGINAL BINARY DECIMAL. THE EXPONENT IS 'BIASED' * + * WITH A BASE VALUE, MEANING THAT THE BIAS IS THE EQUIVALENT OF 2^0. THE BIAS * + * FOR 64-BIT FLOATS IN THIS STANDARD IS 1023, WHICH MEANS THAT THE ACTUAL VALUE * + * OF n IN THE EXAMPLE ABOVE WOULD BE 1023 SUBTRACTED FROM THIS SEGMENT'S VALUE. * + *********************************************************************************** + * # MANTISSA SEGMENT # * + * * + * THE FRACTIONAL PORTION OF THE NUMBER. EACH BIT REPRESENTS AN INVERSE POWER * + * OF TWO, WHICH WILL PRODUCE THE FULL FRACTION OF THE NUMBER WHEN ADDED TOGETHER. * + * THE MSB IS 2^-1, WHILE THE LSB IS 2^-52. THE EXPONENT STEPS DOWN ONE FOR EACH * + * BIT TRAVERSED BEYOND THE MSB IN THE SEGMENT. * + * * + * !! NOTE THAT THIS IS _ONLY_ THE FRACTIONAL PORTION OF THE NUMBER !! * + * IF THE NUMBER BEING PARSED IS 1.1011 x 2^n, THIS WILL ONLY BE 0.1011. THE ONE * + * TO THE LEFT OF THE DECIMAL POINT IS ALWAYS IMPLIED, AND IS NOT STORED IN THIS * + * SEGMENT SO AS TO GIVE AN EXTRA BIT OF PRECISION WHILE CUTTING A REDUNDANCY. * + * !! DO __NOT__ FORGET TO ADD ONE TO THIS VALUE WHEN SUMMED !! * + *********************************************************************************** + * # SPECIAL CONDITIONS # * + * * + * THE IEEE 754-1985 STANDARD SPECIFIES A FEW SPECIAL CONDITIONS THAT MAY OCCUR * + * WHEN PARSING A 64-BIT FLOATING POINT NUMBER. THEY ARE LISTED BELOW. * + * * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ZERO \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE ZERO, 1 FOR NEGATIVE ZERO * + * unbiased exponent: ALL 0 BITS * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ INFINITY \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: 0 FOR POSITIVE INFINITY, 1 FOR NEGATIVE INFINITY * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ALL 0 BITS * + *\\\\\\\\\\\\\\\\\\\\\\\\\\\\ NOT A NUMBER (NaN) \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* + * sign: EITHER 0 OR 1 * + * unbiased exponent: ALL 1 BITS (0x7FF) * + * mantissa: ANYTHING EXCEPT ALL 0 BITS * + ***********************************************************************************/ \ No newline at end of file diff --git a/waif/frog.wav b/waif/frog.wav new file mode 100644 index 0000000..c037d2c Binary files /dev/null and b/waif/frog.wav differ diff --git a/waif/frog_in.jpg b/waif/frog_in.jpg new file mode 100644 index 0000000..4b09477 Binary files /dev/null and b/waif/frog_in.jpg differ diff --git a/waif/frog_out.jpg b/waif/frog_out.jpg new file mode 100644 index 0000000..6e9e589 Binary files /dev/null and b/waif/frog_out.jpg differ diff --git a/waif/main.c b/waif/main.c index a1501e6..39bad97 100644 --- a/waif/main.c +++ b/waif/main.c @@ -9,7 +9,7 @@ #define FALSE 0 #define SAMPLE_RATE 48000 -#define BYTE_RATE 800 +#define BYTE_RATE 1000 /* CMD LINE ARG STRUCT */ struct { @@ -21,8 +21,12 @@ struct { FILE *inFile, *outFile; void writeWavHeader(uint32_t inputFileSize); void writeBytes(uint64_t bytes, int byteCount) { - for (int i = 0; i < byteCount; ++i) - fputc(((char*)bytes)[7-byteCount+i+1], outFile); + for (int i = 0; i < byteCount; ++i) { + int offset = 8 * (byteCount - i - 1); + uint64_t byte = bytes & (0xFFll << offset); + uint8_t bytesh = byte >> offset; + fputc(bytesh, outFile); + } } /* MATH */ @@ -38,15 +42,12 @@ int samplesPerByte() { return SAMPLE_RATE / BYTE_RATE; } -uint32_t audioFileSize(uint32_t inputFileSize) { - return samplesPerByte() * inputFileSize * 2; -} - /* MISC */ void printHelp(); int main(int argc, char *argv[]) { if (argc < 2 || argc > 4) { + printf("a\n"); printHelp(); return -1; } @@ -54,13 +55,14 @@ int main(int argc, char *argv[]) { args.source = NULL; args.destination = "wout.raw"; args.encoding = TRUE; - for (int i = 0; i < argc; ++i) { + for (int i = 1; i < argc; ++i) { switch (i) { - case 0: + case 1: if (strlen(argv[i]) == 2 && argv[i][0] == '/') { if (argv[i][1] == 'D' || argv[i][1] == 'd') args.encoding = FALSE; else if (argv[i][1] != 'E' && argv[i][1] != 'e') { + printf("b\n"); printHelp(); return -1; } @@ -69,23 +71,19 @@ int main(int argc, char *argv[]) { default: if (args.source == NULL) args.source = argv[i]; - else if (args.destination == NULL) + else args.destination = argv[i]; - else { - printHelp(); - return -1; - } break; } } if ((inFile = fopen(args.source, "rb")) == NULL) { - printf("Source file does not exist or cannot be accessed."); + printf("Source file does not exist or cannot be accessed.\n"); return -1; } if ((outFile = fopen(args.destination, "wb+")) == NULL) { - printf("Destination file cannot be written to."); + printf("Destination file cannot be written to.\n"); return -1; } @@ -95,10 +93,56 @@ int main(int argc, char *argv[]) { rewind(inFile); writeWavHeader(fileSize); + double t = 0; double dt = samplePeriod(); int spb = samplesPerByte(); for(;;) { + uint8_t byte = fgetc(inFile); + if (feof(inFile)) + break; + double amplitude = byte == 0 ? 0 : 128 * byte - 64; + for (int i = 0; i < spb; ++i) { + int pt = i < spb/2 ? amplitude : -amplitude;//(int)round(amplitude * sin(2.f*3.14159*BYTE_RATE * t)); + writeBytes(pt, 2); + t += dt; + } + } + } + else { + int spb = samplesPerByte(); + fseek(inFile, 36, SEEK_SET); + + for (;;) { + int16_t max = 0; + for (int i = 0; i < spb; ++i) { + uint8_t msb = fgetc(inFile); + uint8_t lsb = fgetc(inFile); + if (feof(inFile)) + break; + + int16_t inval = (msb << 8) | lsb; + max = inval > max ? inval : max; + } + + int value; + for (value = 0; value < 256; ++value) { + if (value == 0) { + if (max >= 0 && max <= 32) + break; + } else if (value == 1) { + if (max > 32 && max <= 128) + break; + } else { + if (max > (value - 1) * 128 && max <= value * 128) + break; + } + } + + fputc(value, outFile); + + if (feof(inFile)) + break; } } @@ -114,7 +158,7 @@ void printHelp() { printf(" destination\tSpecifies the directory and/or filename\n \t\tfor the converted file.\n"); printf(" /E\t\tEncodes the file.\n"); printf(" /D\t\tDecodes the file.\n\n"); - printf("The /E and /D switches may not be used together. If neither\nis specified, /E is implied. If destination is not supplied,\noutput will be written to 'wout'."); + printf("The /E and /D switches may not be used together. If neither\nis specified, /E is implied. If destination is not supplied,\noutput will be written to 'wout.raw'.\n"); } void writeWavHeader(uint32_t inputFileSize) { @@ -131,6 +175,5 @@ void writeWavHeader(uint32_t inputFileSize) { writeBytes(2, 2); writeBytes(16, 2); fputs("data", outFile); - fputs("fmt ", outFile); writeBytes(dataSize, 4); } \ No newline at end of file