整型、枚举类型属于离散类型(Discrete type)。
整型、枚举类型、实型属于标量类型(Scalar type)。
整型与实型又属于数值类型(Numeric type)。
数字空间犹如宇宙,它是无限的,又无处不在的。
整型与实型是相对的,前者的离散性是因为有后者的充实性!
如今世界上绝大部分的计算机都是基于二进制的(这么说是以前还存在过三进制的!),每个最小的存储单元有两种状态:0和1 。这种二进制的存储单元称为1个比特(bit)位。
比特类型在Ada中可以像如下声明:
type bit is mod 2;
比比特大的整型类型有字节(byte),字(word),双字(dword),四字(qword) 。Ada语言是强类型语言,把有符号和无符号类型是明确区分的。
有符号类型声明如下:
type signed_char is range -2*7 .. *7;
无符号类型声明如下:
type unsigned_char is mod 2 ** 8;
或
type unsigned_char is range 0 .. 2 ** 8 - 1;
语言标准(Stanard)预定义了如下有符号整型:
Short_Short_Integer Short_Integer Integer Long_Long_Integer
在32位模式下,上述类型字节数为1,2,4,8 。
语言标准(Stanard)预定义了如下浮点类型: Short_Float Float Long_Float Long_Long_Float 在32位模式下,上述类型字节数为4,4,8,12 ,有点失望,Short_Float竟然不是16位的。
语言中涉及两个保留字来定义实型:digits与delta。digits用于定义浮点的相对精度(或者说是有效的数字位数,又或者说是整数位与小数位之和),如:
type Real32 is digits 6;
上面的语句定义了6位精度的Real32 。这里的Real32相当于预定义的Float,Float就是具有6位精度的,它们的尺寸为32比特。Long_Float的精度为15,Long_Long_Float的精度为18 。语言中定义有digits属性可以获取浮点类型的精度,如:Float’digits ,这里我们又接触一个Ada语言独有的属性操作符—单引号 。
浮点类型定义的是整数位(小数点之前的)和小数位(小数点之后的)之和,它的精度是浮动的,可以是整数位多,也可以是小数位多。而定点类型就是定义小数部分的绝对精度。例程如下:
type RMB is delta 0.01 ;
以上的语句定义了人民币的绝对精度(最小单位)为0.01元(就是1分钱)。定点控制可以与浮点控制合用,如:
type RMB is delta 0.01 digits 18;