# Data Representation Overview

Intel® Fortran expects numeric data to be in native little endian order, in which the least-significant, right-most zero bit (bit 0) or byte has a lower address than the most-significant, left-most bit (or byte). For information on using nonnative big endian and VAX* floating-point formats, see Supported Native and Nonnative Numeric Formats.

The following table lists the intrinsic data types used by Intel® Fortran, the storage required, and valid ranges. For information on declaring Fortran intrinsic data types, see Type Declarations. For example, the declaration INTEGER(4) is the same as INTEGER(KIND=4) and INTEGER*4.

Fortran Data Types and Storage
Data Type | Storage | Description
--- | --- | ---
BYTE | 1 byte (8 bits) | A signed integer data type equivalent to INTEGER(1).
INTEGER | See INTEGER(2), INTEGER(4), and INTEGER(8) | A signed integer, either INTEGER(2), INTEGER(4), or INTEGER(8). The size is controlled by the integer-size compiler option.
INTEGER(1) | 1 byte (8 bits) | A signed integer value from -128 to 127.
INTEGER(2) | 2 bytes (16 bits) | A signed integer value from -32,768 to 32,767.
INTEGER(4) | 4 bytes (32 bits) | A signed integer value from -2,147,483,648 to 2,147,483,647.
INTEGER(8) | 8 bytes (64 bits) | A signed integer value from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
REAL | See REAL(4), REAL(8), and REAL(16) | A real floating-point value, either REAL(4), REAL(8), or REAL(16). The size is controlled by the real-size compiler option.
DOUBLE PRECISION | See REAL(8) and REAL(16) | A double precision floating-point value, either REAL(8) or REAL(16). The size is controlled by the double-size compiler option.
REAL(4) | 4 bytes (32 bits) | A single-precision real floating-point value in IEEE binary32 format ranging from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are subnormal.
REAL(8) | 8 bytes (64 bits) | A double-precision real floating-point value in IEEE binary64 format ranging from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are subnormal.
REAL(16) | 16 bytes (128 bits) | An extended-precision real floating-point value in IEEE binary128 format ranging from 6.4751751194380251109244389582276465524996Q-4966 to 1.189731495357231765085759326628007016196477Q4932.
COMPLEX | See COMPLEX(4), COMPLEX(8), and COMPLEX(16) | A complex floating-point value in a pair of real and imaginary parts that are either REAL(4), REAL(8), or REAL(16). The size is controlled by the real-size compiler option.
DOUBLE COMPLEX | See COMPLEX(8) and COMPLEX(16) | A double complex floating-point value in a pair of real and imaginary parts that are either REAL(8) or REAL(16). The size is controlled by the double-size compiler option.
COMPLEX(4) | 8 bytes (64 bits) | A single-precision complex floating-point value in a pair of IEEE binary32 format parts: real and imaginary. The real and imaginary parts each range from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are subnormal.
COMPLEX(8) | 16 bytes (128 bits) | A double-precision complex floating-point value in a pair of IEEE binary64 format parts: real and imaginary. The real and imaginary parts each range from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are subnormal.
COMPLEX(16) | 32 bytes (256 bits) | An extended-precision complex floating-point value in a pair of IEEE binary128 format parts: real and imaginary. The real and imaginary parts each range from 6.4751751194380251109244389582276465524996Q-4966 to 1.189731495357231765085759326628007016196477Q4932.
LOGICAL | See LOGICAL(2), LOGICAL(4), and LOGICAL(8) | A logical value, either LOGICAL(2), LOGICAL(4), or LOGICAL(8). The size is controlled by the integer-size compiler option.
LOGICAL(1) | 1 byte (8 bits) | A logical value of .TRUE. or .FALSE.
LOGICAL(2) | 2 bytes (16 bits) | A logical value of .TRUE. or .FALSE.
LOGICAL(4) | 4 bytes (32 bits) | A logical value of .TRUE. or .FALSE.
LOGICAL(8) | 8 bytes (64 bits) | A logical value of .TRUE. or .FALSE.
CHARACTER | 1 byte (8 bits) per character | Character data represented by character code convention. Declarations for Character Types can be in the form CHARACTER(LEN=n) or CHARACTER*n, where n is the number of bytes or n is (*) to indicate passed-length format.
HOLLERITH | 1 byte (8 bits) per Hollerith character | A Hollerith constant.

In addition, you can define Binary Constants.

Parent topic: Data and I/O

- Integer Data Representations
- Logical Data Representations
- Character Representation
- Hollerith Representation