主要内容

整数

整数类

MATLAB®具有四个有符号和四个无符号整数类。有符号类型使您能够处理负整数和正整数,但不能像无符号类型那样表示范围广泛的数字,因为一位用于指定数字的正号或负号。无符号类型提供了更广泛的数字范围,但这些数字只能是零或正。

MATLAB支万博1manbetx持整数数据的1、2、4和8字节存储。如果使用容纳数据的最小整数类型,可以为程序节省内存和执行时间。例如,不需要32位整数来存储值100.

以下是八个整数类、每种类型可存储的值范围以及创建该类型所需的MATLAB转换函数:

等级

价值范围

转换函数

有符号8位整数

-27.到27.-1

int8

有符号16位整数

-215到215-1

int16

有符号32位整数

-231到231-1

int32

有符号64位整数

-263到263-1

int64

无符号8位整数

0比28.-1

uint8

无符号16位整数

0比216-1

uint16

无符号32位整数

0比232-1

uint32

无符号64位整数

0比264-1

uint64

创建整数数据

MATLAB将数字数据存储为双精度浮点(双重的)默认情况下。要将数据存储为整数,需要从双重的到所需的整数类型。使用上表中所示的转换函数之一。

例如,存储325作为分配给变量的16位有符号整数x,类型

x=int16(325);

如果要转换为整数的数字包含小数部分,则MATLAB将舍入到最接近的整数。如果分数部分正好是0.5,然后从两个相等接近的整数中,MATLAB选择绝对值较大的整数:

x=325.499;int16(x)ans=int16 325 x=x+.001;int16(x)ans=int16 326

如果需要使用除默认值外的舍入方案对数字进行舍入,MATLAB提供四个舍入函数:圆形的,修理,地板,及(用熟石膏、木板等)装天花板这个修理函数使您可以覆盖默认值和舍入值接近零当存在非零分数部分时:

x=325.9;int16(固定(x))ans=int16 325

同时涉及整数和浮点的算术运算总是导致整数数据类型。必要时,MATLAB根据默认的舍入算法对结果进行舍入。下面的例子给出了1426.75然后将其舍入到下一个最高整数:

int16(325)*4.39 ans=int16 1427

将其他类(如字符串)转换为整数时,整数转换函数也很有用:

str=‘Hello World’;int8(str)ans=1×11 int8行向量72 101 108 111 32 87 111 114 108 100

如果你转换一个值转换为整数类,结果是0在那个整数类中。例如

int32(NaN)ans=int32 0

整数类上的算术运算

MATLAB可以对以下类型的数据执行整数运算:

  • 相同整数数据类型的整数或整数数组。这将生成与操作数具有相同数据类型的结果:

    x=uint32([132 347 528])*uint32(75);类别(x)ans=uint32
  • 整数或整数数组和标量双精度浮点数。这将生成与整数操作数具有相同数据类型的结果:

    x=uint32([132 347 528])*75.49;类别(x)ans=uint32

对于其中一个操作数是整数数据类型数组的所有二进制操作(64位整数除外)另一个是标量双精度运算,MATLAB使用逐元素双精度算法计算运算,然后将结果转换回原始整数数据类型。对于涉及64位整数数组和标量双精度的二进制运算,MATLAB计算运算就像使用80位扩展精度算法一样,以防止失去精确性。

不支持涉及整数类型的复数的操作。万博1manbetx

整数类的最大值和最小值

对于每种整数数据类型,都有一个可以用该类型表示的最大值和最小值。下表所示整数在“值的范围”列中列出每个整数数据类型的最大值和最小值。

您还可以使用获取这些值intmaxintmin功能:

intmax('int8')ans=int8 127 intmin('int8')ans=int8-128

如果将大于整数数据类型最大值的数字转换为该类型,则MATLAB将其设置为最大值。类似地,如果将小于整数数据类型最小值的数字转换为最小值。例如,

x=int8(300)x=int8 127 x=int8(-300)x=int8-128

此外,当涉及整数的算术运算结果超过数据类型的最大(或最小)值时,MATLAB将其设置为最大(或最小)值:

x=int8(100)*3x=int8 127 x=int8(-100)*3x=int8-128