主要内容

int2bit

将整数转换为位

自 R2021b 起

说明

Y = int2bit(X,n)X 中的每个整数元素转换为 Yn 个按列排列的位,其中第一个位为最高有效位 (MSB)。

示例

Y = int2bit(X,n,msbfirst) 指示 Y 中每 n 个按列排列的位中,第一个位是 MSB 还是最低有效位 (LSB)。

示例

示例

全部折叠

指定一个由整数组成的行向量。

X = [12 5]
X = 1×2

    12     5

指定转换输出为四个按列排列的位元素。然后,将整数转换为位。

n = 4;
Y = int2bit(X,n)
Y = 4×2

     1     0
     1     1
     0     0
     0     1

指定整数矩阵。

X = int8([10 6 14; 11 5 9])
X = 2×3 int8 matrix

   10    6   14
   11    5    9

指定输出中每四个按列排列的位元素的第一个位为 LSB。然后,将整数转换为位。

n = 4;
msbfirst = false;
Y = int2bit(X,n,msbfirst)
Y = 8×3 int8 matrix

   0   0   0
   1   1   1
   0   1   1
   1   0   1
   1   1   1
   1   0   0
   0   1   0
   1   0   1

指定整数数组。

X = randi([0,9],4,3,2,'uint16')
X = 4×3×2 uint16 array
X(:,:,1) =

   8   6   9
   9   0   9
   1   2   1
   9   5   9


X(:,:,2) =

   9   4   6
   4   9   0
   8   7   8
   1   9   9

指定转换输出为三个按列排列的位元素。然后,将整数转换为位。

n = 3;
Y = int2bit(X,n)
Y = 12×3×2 uint8 array
Y(:,:,1) =

   0   1   0
   0   1   0
   0   0   1
   0   0   0
   0   0   0
   1   0   1
   0   0   0
   0   1   0
   1   0   1
   0   1   0
   0   0   0
   1   1   1


Y(:,:,2) =

   0   1   1
   0   0   1
   1   0   0
   1   0   0
   0   0   0
   0   1   0
   0   1   0
   0   1   0
   0   1   0
   0   0   0
   0   0   0
   1   1   1

指定一个由整数组成的行向量。

X = [153, -103, 103, -128] 
X = 1×4

   153  -103   103  -128

指定转换输出为八个按列排列的位元素。然后,将整数转换为位。

n = 8;
Y1 = int2bit(X,n)
Y1 = 8×4

     1     1     0     1
     0     0     1     0
     0     0     1     0
     1     1     0     0
     1     1     0     0
     0     0     1     0
     0     0     1     0
     1     1     1     0

将位转换回整数并检查值。得到的整数与原始整数不匹配,因为有符号整数需要多于八位才能正确表示为 2 的补码值。

X1 = bit2int(Y1,n,IsSigned=true)
X1 = 1×4

  -103  -103   103  -128

isequal(X,X1)
ans = logical
   0

指定转换输出为九个按列排列的位元素。然后,将整数转换为位。

n = 9;
Y2 = int2bit(X,n)
Y2 = 9×4

     0     1     0     1
     1     1     0     1
     0     0     1     0
     0     0     1     0
     1     1     0     0
     1     1     0     0
     0     0     1     0
     0     0     1     0
     1     1     1     0

将位转换回整数并检查值。得到的整数与原始整数匹配,从而确认九个位能正确表示 2 的补码值。

X2 = bit2int(Y2,n,IsSigned=true)
X2 = 1×4

   153  -103   103  -128

isequal(X,X2)
ans = logical
   1

输入参数

全部折叠

整数,指定为由整数值组成的标量、向量、矩阵或三维数组。

示例: [-10 2] 指定大小为 1×2 的输入行向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

转换为位的位数,指定为正整数。位数 n 包括符号位。

数据类型: double

MSB 优先设定,指定为数值或逻辑值 1 (true) 或 0 (false)。

  • true - 对于 X 中每 n 个按列排列的位,第一个位为 MSB。

  • false - 对于 X 中每 n 个按列排列的位,第一个位为 LSB。

数据类型: logical

输出参量

全部折叠

输入整数的位表示,以列向量、矩阵或三维数组形式返回。Y 的维度与 X 相同,不同之处在于 Y 的行数是 X 行数的 n 倍。输出 Y 由指定方向上的 n 个最低有效位组成。如果 n 小于表示 X 中值所需的位数,则输出 Yn 个最低有效位组成。

Y 的数据类型取决于 X 的数据类型。

  • 如果 X 是浮点数据类型,则 Y 是浮点数据类型。

  • 如果 X 是内置无符号整数数据类型,则 Y 的数据类型为 uint8

  • 如果 X 是内置有符号整数数据类型,则 Y 的数据类型为 int8

  • 如果 X 的数据类型为 double,则 Y 的数据类型为 double,且 n 不大于 53。

  • 如果 X 的数据类型为 single,则 Y 的数据类型为 single,且 n 不大于 24。

扩展功能

全部展开

版本历史记录

在 R2021b 中推出

全部展开

另请参阅

函数

模块