Matlab中bitset函数用法

目录

语法

说明

示例

将位设置为“打开”

超出整数类型范围

将位设置为“关闭”

设置多个位


        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 的大小与该数组相同。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值