Double precision
From Wikipedia, the free encyclopedia
In computing, double precision is a computer numbering format that occupies two adjacent storage locations in computer memory. A double precision number, sometimes simply called a double, may be defined to be an integer, fixed point, or floating point.
Modern computers with 32-bit stores (single precision) provide 64-bit double precision. Double precision floating point is an IEEE 754 standard for encoding floating point numbers that uses 8 bytes.
Contents |
[edit] Double precision memory format
Sign bit: 1 Exponent width: 11 Significand precision: 52 (53 implicit)
The format is written with an implicit integer bit with value 1 unless the written exponent is all zeros. With the 52 bits of the fraction mantissa appearing in the memory format the total precision is therefore 53 bits (approximately 16 decimal digits, log10(253)). The bits are laid out as follows:
[edit] Exponent encodings
Emin (0x001) = -1022 Emax (0x7fe) = 1023 Exponent bias (0x3ff) = 1023
The true exponent = written exponent - exponent bias
0x000 and 0x7ff are reserved exponents 0x000 is used to represent zero and denormals 0x7ff is used to represent infinity and NaNs
All bit patterns are valid encodings.
The entire double precision number is described by:
[edit] Double precision examples
0x3ff0 0000 0000 0000 = 1
0xc000 0000 0000 0000 = -2
0x7fef ffff ffff ffff ~ 1.7976931348623157 x 10308 (Max Double)
0x3fd5 5555 5555 5555 ~ 1/3
(1/3 rounds down instead of up like single precision, because of the odd number of bits in the significand.)
0x0000 0000 0000 0000 = 0 0x8000 0000 0000 0000 = -0
0x7ff0 0000 0000 0000 = Infinity 0xfff0 0000 0000 0000 = -Infinity
[edit] See also
- half precision – single precision – double precision – quadruple precision
- Floating point