Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

bitset

设置指定位置的位

说明

intout = bitset(A,bit) 返回 A 的值,并将位置 bit 设置为 1(打开)。

示例

intout = bitset(A,bit,assumedtype) 假定 A 的类型为 assumedtype

示例

intout = bitset(A,bit,V) 返回 A,并将位置 bit 设置为 V 的值。

  • 如果 V 为零,则位的位置 bit 将设置为 0(关闭)。

  • 如果 V 为非零,则位的位置 bit 将设置为 1(打开)。

示例

intout = bitset(A,bit,V,assumedtype) 假定 A 的类型为 assumedtype

示例

示例

全部折叠

将 2 的幂与某个数字相加。

A = 4;
intout = bitset(A,4:6)
intout = 1×3

    12    20    36

您可以看到,bitset 按顺序打开位 4 至 6。

c = dec2bin(intout)
c = 3x6 char array
    '001100'
    '010100'
    '100100'

如果指定超出 assumedtype 范围的整数,MATLAB® 会引发错误。例如,bitset(300,5,'int8') 将返回错误,因为 int8 整数的最大值为 127。

通过将输入限制在指定数据类型的范围内可以避免此错误。

intout = bitset(75,5,'int8')
intout = 91

用某个数字反复减去 2 的幂。

a = intmax('uint8')
a = uint8
    255
for k = 0:7
   a = bitset(a, 8-k, 0);
   b(1,k+1) = a;
end
b
b = 1x8 uint8 row vector

   127    63    31    15     7     3     1     0

将多个位设置为不同值

bits = 2:6;
val = [1 0 0 1 1];
intout = bitset(0,bits,val,'int8')
intout = 1×5

     2     0     0    16    32

输入参数

全部折叠

输入值,指定为数组。AbitV 每个都可以是标量或大小相同的数组。

  • 如果 A 为双精度数组,并且未指定 assumedtype,则 MATLAB® 会将 A 视为无符号的 64 位整数。

  • 如果已指定 assumedtypeA 中的所有元素必须是 assumedtype 类型范围内的整数值。

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

位的位置,指定为整数或整数数组。AbitV 每个都可以是标量或大小相同的数组。bit 的值必须介于 1(最低有效位)和 A 的整数类中的位数之间。

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

假定的 A 的数据类型,指定为 'uint64''uint32''uint16''uint8''int64''int32''int16''int8'

  • 如果 A 是双精度数组,assumedtype 可以指定任何有效的整数类型,但默认为 'uint64'

  • 如果 A 是整数类型数组,assumedtype 必须指定相同的整数类型。

数据类型: char | string

位的值,指定为标量或数值数组。AbitV 每个都可以是标量或大小相同的数组。

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

输出参量

全部折叠

调整后的整数,以数组形式返回。intout 的数据类型与 A 相同。

  • 如果 AbitV 都是标量,则 intout 也是标量。

  • 如果 AbitV 中的任何一个为数组,则 intout 的大小与该数组相同。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

| | | | | |