文件

整数

整数课程

马铃薯草®有四个签名和四个无符号整数类。签名类型使您可以使用负整数以及正数,但不能表示为无符号类型的范围广泛,因为一位用于指定数字的正面或负符号。无符号类型给您更广泛的数字,但这些数字只能为零或正数。

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

以下是八个整数类,您可以使用每种类型存储的值范围,以及创建该类型所需的MATLAB转换功能:

班级

范围的值

转换功能

签名8位整数

-27.到27.-1

INT8.

签署了16位整数

-215.到215.-1

int16

签名32位整数

-231.到231.-1

INT32.

签署了64位整数

-263.到263.-1

INT64.

Unsigned 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 (fix(x)) ans = Int16 325

同时涉及整数和浮点数的算术操作总是得到整数数据类型。MATLAB在必要时根据默认的舍入算法对结果进行四舍五入。下面的例子给出了一个确切的答案1426.75MATLAB将其四舍五入到下一个最高整数:

INT16(325)* 4.39 ANS = INT16 1427

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

str ='你好世界';INT8(STR)ANS = 1×11 INT8行向量72 101 108 108 111 32 87 111 1141111100 100

如果转换a值转换为整数类,结果是值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位扩展精度算法一样,以防止精度的损失。

不支持涉及具有整数类型的复数的操作。金宝app

整数类的最大和最小值

对于每个整数数据类型,您可以使用该类型表示最大和最小的数字。表格下的表格整数列出“值范围”列中的每个整数数据类型的最大和最小值。

属性也可以获得这些值intmax.intmin.功能:

INTMAX('INT8')ANS = INT8 127 INTMIN('INT8')ANS = INT8 -128

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

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

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

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