# <!-- var kmNextPage = "armcc_chr1359124233705.htm"; var kmPrevPage = "armcc_chr1359124232675.htm"; var kmNextPageTitle = "Compiler support for floating-point computations a"; var kmPrevPageTitle = "Compiler and library support for half-precision fl"; var kmBreadCrumbs = "<a href=\"default.htm\">Home</a> &raquo; <a href=\"armcc_chr1359124220881.htm\">Compiler Coding Practices</a> &raquo; Half-precision floating-point number format"; kmSetupPaging (); kmNavButtons(); //--> Half-precision floating-point number format

## 4.48 Half-precision floating-point number format

The half-precision floating-point formats available are `ieee` and `alternative`. In both formats, the basic layout of the 16-bit number is the same.

The half-precision floating-point format is as follows:
Figure 4-1 Half-precision floating-point format

Where:
```   S (bit[15]):      Sign bit
E (bits[14:10]):  Biased exponent
T (bits[9:0]):    Mantissa.
```
The meanings of these fields depend on the format that is selected.
The IEEE half-precision format is as follows:
```IF E==31:
IF T==0: Value = Signed infinity
IF T!=0: Value = Nan
T[9] determines Quiet or Signalling:
0: Quiet NaN
1: Signalling NaN
IF 0<E<31:
Value = (-1)^S x 2^(E-15) x (1 + (2^(-10) x T))
IF E==0:
IF T==0: Value = Signed zero
IF T!=0: Value = (-1)^S x 2^(-14) x (0 + (2^(-10) x T))
```
The alternative half-precision format is as follows:
```IF 0<E<32:
Value = (-1)^S x 2^(E-15) x (1 + (2^(-10) x T))
IF E==0:
IF T==0: Value = Signed zero
IF T!=0: Value = (-1)^S x 2^(-14) x (0 + (2^(-10) x T))
```