This section documents the memory formats used to represent the data values in the Ada95 language. For each type, the number of bytes used and the interpretation of the data is given.
Type | Storage size | Range |
Integer | 4 bytes | -2,147,483,648 to 2,147,483,647 |
Natural | Size of Integer | 0 to Integer'last |
Positive | Size of Integer | 1 to Integer'last |
Long_Integer * | 8 bytes | -2**63 to (2**63)-1 |
Short_Integer * | 1 byte | -128 to 127 |
Float, Short_Float |
4 bytes | Real numbers with an approximate range of 8.43E-37 to 3.37E+38 and an accuracy of about 6 decimal digits |
Long_Float | 8 bytes | Real numbers with an approximate range of 4.19E-307 to 1.67E+308 and an accuracy of about 15 decimal digits |
Boolean | 1 byte | An enumeration type with the values (False, True) |
Character | 1 byte | A character in the ANSI (8-bit) character set. |
Wide_Character | 2 bytes | A character in the UNICODE (16-bit) character set |
Unsigned_Integer * | 4 bytes | 0 to 4,294,967,295 |
Byte_Integer * | 1 byte | Integer values in the range of -128 to 127 |
Unsigned_Byte_Integer * | 1 byte | Integer values in the range of 0 to 255 |
Word_Integer * | 2 bytes | Integer values in the range of -32768 to 32767 |
Unsigned_Word_Integer * | 2 bytes | Integer values in the range of 0 to 65535 |
Dword_Integer * | 4 bytes | Integer values in the range of -2,147,483,648 to 2,147,483,647 |
Unsigned_Dword_Integer * | 4 bytes | Integer values in the range of 0 to 4,294,967,295 |
Qword_Integer * | 8 bytes | -2**63 to (2**63)-1 |
Byte_Boolean * | 1 byte | An enumeration type with the values (False, True) |
Word_Boolean * | 2 bytes | An enumeration type with the values (False, True) |
Dword_Boolean * | 4 bytes | An enumeration type with the values (False, True). Useful when interfacing with C code. |
* An extended type specific to Stony Brook Ada95.