设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1294|回复: 0

MATLAB的两种移位运算

[复制链接]

8

主题

65

金钱

109

积分

入门用户

发表于 2019-7-4 15:21:57 | 显示全部楼层 |阅读模式

MATLAB的两种移位运算:

1)circshift矩阵移位

circshift:循环移位数组

语法:B = circshift(A,shiftize)

说明:

B  = circshift(A,shiftize)通过shiftize元素循环移位数组A中的值。shiftize是整数标量的向量,其中第n个元素指定数组A的第n维的移位量。如果移位中的元素为正,则A的值向下(或向右)移位。如果是负数,则A的值向上(或向左)移动。如果为0,则不移动该维度中的值。



示例:

将第一维值向下循环移动1.
A = [1 2 3; 4 5 6; 7 8 9]
A =
     1      2      3
     4      5      6
     7      8      9

B =环球(A,1)
B =
     7      8      9
     1      2      3
     4      5      6



将第一维值向下循环1,将第二维值向左
循环1. B = circshift(A,[1 -1]);
B =
    8      9      7
    2      3      1
    5      6      4



2)bitshift位移位

bitshift:
移位位指定的位数



句法 :

C = bitshift(A,k)
C = bitshift(A,k,n)



说明:

C = bitshift(A,k)返回移位了k位的A的值。输入参数A必须是无符号整数或无符号整数数组。通过k移位与乘以2 ^ k相同。允许k的负值,这对应于向右移位,或者除以2 ^ abs(k)并截断为整数。如果移位导致C溢出无符号整数类A中的位数,则丢弃溢出位。

C = bitshift(A,k,n)导致任何溢出n位的位被丢弃。n的值必须小于或等于A的无符号整数类的位长(例如,对于uint32,n <= 32)。

而不是使用bithift(A,k,8)或n的另一个幂2,考虑使用bitshift(uint8(A),k)或适当的无符号整数类。



例子:


例1
将1100(12,十进制)移位到左边的两位产生110000(48,十进制)。
C = bitshift(12,2)
C =
   48



例2


重复地将无符号16位值的位向左移位,直到所有非零位溢出。跟踪二进制的进度:
a = intmax('uint16');
disp(sprintf(...
  '初始uint16值%5d是二进制中的%16s',...
  a,dec2bin(a)))

对于k = 1:16
  a = bitshift(a,1);
  disp(sprintf(...
      'Shifted uint16 value%5d is binary 16s in binary',...
      a,dec2bin(a)))
  end
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表