|
|
Copyright 1991 David Jurgens |
Floating Point Formats
IEEE 4 byte real
31 30 23 22 0
┌─┬────────┬──────────────────────────┐
│s│ 8 bits │msb 23 bit mantissa lsb│
└─┴────────┴──────────────────────────┘
│ │ └──────────────── mantissa
│ └──────────────────────────────── biased exponent (7fh)
└───────────────────────────────────── sign bit
IEEE 8 byte real
63 62 52 51 0
┌─┬──────────┬────────────────────────────────────┐
│s│ 11 bits │msb 52 bit mantissa lsb│
└─┴──────────┴────────────────────────────────────┘
│ │ └──────────────── mantissa
│ └──────────────────────────────── biased exponent (3FFh)
└───────────────────────────────────── sign bit
Microsoft 4 byte real
31 24 23 22 0
┌────────┬─┬──────────────────────────┐
│ 8 bits │s│msb 23 bit mantissa lsb│
└────────┴─┴──────────────────────────┘
│ │ └──────────────── mantissa
│ └──────────────────────────── sign bit
└────────────────────────────── biased exponent (81h)
Microsoft 8 byte real (see note below)
63 56 55 54 0
┌───────┬─┬────────────────────────────────────┐
│ 8bits │s│msb 52 bit mantissa lsb│
└───────┴─┴────────────────────────────────────┘
│ │ └──────────── mantissa
│ └───────────────────────────── sign bit
└─────────────────────────── biased exponent (401h, see below)
IEEE 10 byte real (temporary real)
79 78 64 63 62 0
┌─┬───────────┬─┬────────────────────────────────────────┐
│s│ 15 bits │1│msb 63 bit mantissa lsb│
└─┴───────────┴─┴────────────────────────────────────────┘
│ │ │ └───── mantissa
│ │ └──────────────────────── first mantissa bit
│ └───────────────────────────── biased exponent (3FFFh)
└────────────────────────────────── sign bit
Turbo Pascal 6 byte real
47 40 39 38 0
┌────────┬─┬────────────────────────────────────┐
│ 8 bits │s│msb 39 bit mantissa lsb│
└────────┴─┴────────────────────────────────────┘
│ │ └──────────── mantissa
│ └───────────────────────────── sign bit
└──────────────────────────────── biased exponent (80h)
Microsoft Fortran Complex number
┌──────────────────────────┬─────────────────────────────┐
│ Float Real component │ Float Imaginary component │
└──────────────────────────┴─────────────────────────────┘
(each component is either 8 or 16 byte IEEE real)
- sign bit representation: 0 is positive and 1 is negative
- in all float formats except the IEEE 10 byte real, the
mantissa is stored without most significant bit; since
the state of this bit is known to be set, it is not
included and the exponent is adjusted accordingly
- all formats use binary float representation
- memory representation uses 80x86 reverse byte/word order.
- Microsoft languages use the IEEE real formats; BASIC is the
only normal user of the Microsoft float format
- Microsoft 8 byte real format has not been verified; several
Microsoft publications show an 8 bit exponent instead of 11 bits
and state the BIAS is 401h; the discrepancy is that 8 bits can't
hold the value 401h (requires 11 bits)
True exponent is the exponent value minus the following bias:
81h for Microsoft 4 byte real
401h for Microsoft 8 byte real
7Fh for IEEE 4 byte real
3FFh for IEEE 8 byte real
80h for Turbo Pascal 6 byte real
Size Range Significant digits
4 byte real 8.43x10E-37 to 3.37x10E38 6-7
8 byte real 4.19x10E-307 to 1.67x10E308 15-16
10 byte real 3.4x10E-4932 to 1.2x10E4932 19
- see dmsbintoieee() dieeetomsbin() NUMERIC RANGES
|
|
Esc or Alt-X to exit |
float formats |
Home/PgUp/PgDn/End ←↑↓→ |