Format of Ten-Byte Floating Point Data in Sixteen-Byte Fields

IBM C and C++ Compilers conforms to IEEE format, in which a floating point number is represented in terms of sign (S), exponent (E), and fraction (F):

(-1)S x 2E x 1.F

Type long double
Alignment 4-byte aligned
8-byte aligned
Bit
Mapping
In the internal representation, there is 1 bit for the sign (S), 15 bits for the exponent (E), and 64 bits for the fraction (F). The bits are mapped with the fraction in bit 0 to bit 63, the exponent in bit 64 to bit 78, and the sign in bit 79:

7 777777777666666
9 876543210987654
S EEEEEEEEEEEEEEE

6666555555555544444444443333333333222222222211111111110000000000
3210987654321098765432109876543210987654321098765432109876543210
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Read the lines vertically from top to bottom. For example, the second column of numbers shows that bit 78 is part of the exponent.

Storage
Mapping
In the following mapping, high memory is to the right.
byte 0 byte 1 byte 2 ... byte 7 byte 8 byte 9
76543210 
  111111
54321098 
22221111
32109876
... 
66666555
43210987 
77666666
10987654
77777777
98765432
FFFFFFFF 
FFFFFFFF 
FFFFFFFF 
...
FFFFFFFF
EEEEEEEE 
SEEEEEEE



Data Mapping


Mapping of Fundamental Data Types
Mapping of Compound Data Types
Format of Four-Byte Floating Point Data
Format of Eight-Byte Floating Point Data