2.1 整型

MATLAB 7.0中的整型数据类型,按照有无符号位可以分为有符号位整数和无符号位整数,而按照数据类型的字节数又可分为8位、16位、32位、64位的整数类型。在使用中主要根据实际存储的数据的数值大小范围来确定数据类型,在保证数据精度的同时尽量避免不必要的内存的浪费,提高运算速度。其中有符号位整型需要一个1位来表示数据为负,因此有符号位的整型数据8位、16位、32位、64位的范围分别为-27~27-1、-215~215-1、-231~231-1、-263~263-1;无符号位的整型8位、16位、32位、64位的范围分别为0~28-1、0~216-1、0~232-1、0~264-1。

不同类型整型的生成函数如下。

● int8(x):有符号8位整型数据生成。

● int16(x):有符号16位整型数据生成。

● int32(x):有符号32位整型数据生成。

● int64(x):有符号64位整型数据生成。

● uint8(x):无符号8位整型数据生成。

● uint16(x):无符号8位整型数据生成。

● uint32(x):无符号8位整型数据生成。

● uint64(x):无符号8位整型数据生成。

【例2.1】不同类型整型数据的生成。

>> x=int8(12)  %有符号8位整型数据x生成,其值为12
x =
   12
>> y=uint16(x)  %x转换为无符号16位整型数据y
y =
    12
>> z=int8(128)  %有符号8位整型数据z生成,128超过最大上限,其值为127
z =
  127
>> xx=int8(-8)  %有符号8位整型数据xx生成,其值为-8
xx =
   -8
>> yy=uint8(-8)  %无符号8位整型数据yy生成,由于负数超过其下限,yy值为0
yy =
   0
>> zz=int32(-8)  %有符号32位整型数据zz生成,其值为-8
zz =
      -8
>> whos  %查看工作空间的变量
  Name   Size          Bytes Class
  x     1x1             1 int8 array
  xx    1x1             1 int8 array
  y     1x1             2 uint16 array
  yy    1x1             1 uint8 array
  z     1x1             1 int8 array
  zz    1x1             4 int32 array
Grand total is 6 elements using 10 bytes
>> isinteger(zz) %判断变量zz数据类型是否为整型
ans =
    1
>> x=zeros(3,'uint8') %全零矩阵的生成,并定义其数据类型为8位无符号整型
x =
    0  0  0
    0  0  0
    0  0  0

intmin()和intmax()函数可用于确定整型数据类型的数据范围,其中intmin()函数用于求数据类型下限,intmax()函数用于求数据类型上限。函数的调用格式如下所示。

● intmin(classname):指导数据类型下限计算。

● intmax(classname):指导数据类型上限计算。

【例2.2】不同整型数据类型数值范围计算。

>> intmin('int8')  %有符号8位整型下限计算
ans =
 -128
>>intmax('int8')  %有符号8位整型上限计算
ans =
  127
>> intmin('int32')  %有符号32位整型下限计算
ans =
 -2147483648
>> intmin('uint32')  %无符号32位整型下限计算
ans =
          0