• matlab中bitshift 将位移动指定位数


    来源:https://ww2.mathworks.cn/help/matlab/ref/bitshift.html?searchHighlight=bitshift&s_tid=doc_srchtitle

    itshift

    将位移动指定位数

    全页折叠
     

    说明

    示例

    intout = bitshift(A,k) 返回向左偏移 k 位的 A,这等效于乘以 2kk 的负值与向右移位或除以 2|k| 并向负无穷舍入到最接近的整数相对应。将截断任何溢出位。

    • 如果 A 是有符号的整数数组,则 bitshift 返回算数偏移结果,并在 k 为负时保留有符号的位,k 为正时不保留有符号的位。

    • 如果 k 为正,MATLAB® 将位左移,并在右侧插入 k 0 位。

    • 如果 k 为负,并且 A 为非负,MATLAB 将位右移,并在左侧插入 |k| 0 位。

    • 如果 k 为负,并且 A 为负,MATLAB 将位右移,并在左侧插入 |k| 1 位。

    示例

    intout = bitshift(A,k,assumedtype) 假定 A 的类型为 assumedtype

     

    示例

    全部折叠

    偏移的 8 位整数

    反复将无符号的 8 位值的位左移,直到所有非零位溢出为止。

    a = intmax('uint8');
    s1 = 'Initial uint8 value %5d is %08s in binary
    ';
    s2 = 'Shifted uint8 value %5d is %08s in binary
    ';
    fprintf(s1,a,dec2bin(a))
    Initial uint8 value   255 is 11111111 in binary
    
     for i = 1:8
        a = bitshift(a,1);
        fprintf(s2,a,dec2bin(a))
     end
    Shifted uint8 value   254 is 11111110 in binary
    Shifted uint8 value   252 is 11111100 in binary
    Shifted uint8 value   248 is 11111000 in binary
    Shifted uint8 value   240 is 11110000 in binary
    Shifted uint8 value   224 is 11100000 in binary
    Shifted uint8 value   192 is 11000000 in binary
    Shifted uint8 value   128 is 10000000 in binary
    Shifted uint8 value     0 is 00000000 in binary
    
     
     

    不同整数类型的不同结果

    使用不同的假定整数类型为数字求偏移量。

    uintout = bitshift(6,5:7,'uint8')        %%   5:7   =  5 6 7  矩阵
    uintout = 1×3
    
       192   128     0
    
    
    intout = bitshift(6,5:7,'int8')
    intout = 1×3
    
       -64  -128     0
    
    
     
     

    输入参数

    全部折叠

    A - 输入值
    数组

    输入值,指定为数组。A 可以是标量或与 k 大小相同的数组。

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

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

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

    k - 交换位数
    整数 | 整数数组

    交换的位数,指定为整数或整数数组。k 可以是标量或与 A 大小相同的数组。

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

    assumedtype - 假定的 A 的数据类型
    'uint64' | 'uint32' | 'uint16' | 'uint8' | 'int64' | 'int32' | 'int16' | 'int8'

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

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

    • 如果 A 是双精度数组,则 assumedtype 可以指定任何有效的整数类型。

    数据类型: char | string

    输出参数

    全部折叠

    intout - 移位后的值
    数组

    移位后的值,以数组形式返回。intout 的数据类型与 A 相同。

    • 如果 Ak 是标量,则 intout 也是标量。

    • 如果 Ak 为数组,则 intout 的大小与该数组相同。

    扩展功能

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

    用法说明和限制:

    • 至少有一个输入(Ak)必须是整数数组。

    • 输入 A 不能是有符号整数数组。

    • 不支持 64 位整数。

    • 不支持 assumedtype 参数。

    有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。

    另请参阅

    bitand | bitcmp | bitget | bitor | bitset | bitxor | intmax

    在 R2006a 之前推出

  • 相关阅读:
    Aras前端的一些知识
    Eclipse 实用快捷键大全
    Eclipse插件使用links目录的用法
    extjs portal 保存 事件
    NDRS SQL
    [VB]修改注册表让程序开机自动运行
    [C++]数组参数
    [C++]指针类型出参
    [C++]函数返回值
    [VBA]Excel输出utf8编码格式文件 使用WideCharToMultiByte
  • 原文地址:https://www.cnblogs.com/MCSFX/p/11707257.html
Copyright © 2020-2023  润新知