目录
bitset函数的功能是设置指定位置的位。
语法
intout = bitset(A,bit)
intout = bitset(A,bit,assumedtype)
intout = bitset(A,bit,V)
intout = bitset(A,bit,V,assumedtype)
说明
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
输入值,指定为数组。A、bit 和V每个都可以是标量或大小相同的数组。
-
如果 A 为双精度数组,并且未指定 assumedtype,则 MATLAB® 会将 A 视为无符号的 64 位整数。
-
如果已指定 assumedtype,A 中的所有元素必须是 assumedtype 类型范围内的整数值。
位的位置,指定为整数或整数数组。A、bit 和 V 每个都可以是标量或大小相同的数组。bit 的值必须介于 1(最低有效位)和 A 的整数类中的位数之间。
调整后的整数,以数组形式返回。intout 的数据类型与 A 相同。
-
如果 A、bit 和 V 都是标量,则 intout 也是标量。
-
如果 A、bit 或 V 中的任何一个为数组,则 intout 的大小与该数组相同。