Main Content

合并不同的整数类型

概述

如果您在矩阵中合并不同的整数类型(例如有符号与无符号,或 8 位整数与 16 位整数),MATLAB® 将返回所有元素都属于一个公共类型的矩阵。MATLAB 将生成矩阵的所有元素设置为输入矩阵中的最左侧元素的数据类型。例如,以下串联生成由 3 个 16 位有符号整数组成的向量:

A = [int16(450) uint8(250) int32(1000000)]
A =

  1×3 int16 row vector

     450     250   32767

合并不同大小的整数的示例

将下面两个数字串联一次,然后交换其顺序。返回值取决于整数的串联顺序。最左侧的类型决定着向量中的所有元素的数据类型:

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 column vector

    50
   127

注意

您可以使用 intmaxintmin 函数查找任何 MATLAB 整数类型的最大值或最小值。对于浮点类型,请使用 realmaxrealmin

合并有符号与无符号整数的示例

现在使用有符号与无符号整数做相同的练习。同样,最左侧的元素决定着生成矩阵中的所有元素的数据类型:

A = [int8(-100) uint8(100)]
A =

  1×2 int8 row vector

   -100    100
B = [uint8(100) int8(-100)]
B =

  1×2 uint8 row vector

   100     0

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

MATLAB 在将每个元素串联为一个合并数组之前计算每个元素。换句话说,在合并两个元素前,以下语句的计算结果为一个 8 位有符号整数(等于 50)和一个 8 位无符号整数(无符号的 -50 设为零)。按照该串联,第二个元素保留其零值,但采用无符号 int8 类型:

A = [int8(50), uint8(-50)]
A =

  1×2 int8 row vector

   50    0

相关主题