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.