主要内容

组合不同的整数类型

概述

如果你在一个矩阵中组合不同的整数类型(例如,有符号和无符号,或8位整数和16位整数),MATLAB®返回所有元素都是一种公共类型的矩阵。MATLAB将结果矩阵的所有元素设置为输入矩阵中最左边元素的数据类型。例如,下面的连接结果是一个由三个16位有符号整数组成的向量:

A = [int16(450) uint8(250) int32(1000000)]
A = 1×3 int16 row vector 450 250 32767

组合不同整数大小的示例

将下列两个数字连接一次,然后调换它们的顺序。返回值取决于整数连接的顺序。最左边的类型决定vector中所有元素的数据类型:

A = [int16(5000) int8(50)]
A = 1×2 int16 row vector 5000 50
B = [int8(50) int16(5000)]
B = 1×2 int8 row vector 50 127

第一个操作返回一个16位整数的向量。第二个返回由8位整数组成的向量。的元素int16 (5000)被设置为127, 8位有符号整数的最大值。

同样的规则也适用于垂直连接:

C = [int8 (50);int16 (5000))
C = 2×1 int8列向量50 127

请注意

可以找到任何MATLAB整数类型的最大值或最小值intmaxintmin功能。对于浮点类型,请使用最大浮点数最小正浮点数

结合有符号和无符号的例子

现在对有符号整数和无符号整数做同样的练习。同样,最左边的元素决定了结果矩阵中所有元素的数据类型:

A = [int8(-100) uint8(100)]
A = 1×2 int8行向量-100 100
B = [uint8(100) int8(-100)]
B = 1×2 uint8 row vector 100 0

的元素int8 (-100)设置为零,因为它不再有符号。

MATLAB计算每个元素之前将它们连接到组合数组中。换句话说,下面的语句在两个元素合并之前计算出一个8位有符号整数(等于50)和一个8位无符号整数(unsigned -50被设置为0)。在连接之后,第二个元素保留其零值,但采用unsignedint8类型:

A = [int8(50), uint8(-50)]
A = 1×2 int8 row vector 50 0

相关的话题