MATLAB 循环移位序列,二进制的按位循环右移/左移

本文介绍了如何在MATLAB中使用`circshift`函数进行矩阵循环移位,以及如何实现二进制序列的循环移位。通过示例展示了`circshift`函数的用法,并给出了利用循环和`bitshift`配合实现二进制数据的循环移位方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)矩阵循环移位:circshift

    例如:b = circshift(a,[x,y]) 其中a为待移位的矩阵,x表示上下移位位数(正数表示向下移位),y表示左右移位位数(正数表示向右移位)

>> x = [1,2,3;4,5,6;7,8,9]

x =

     1     2     3
     4     5     6
     7     8     9

>> y = circshift(x,[1,-1])

y =

     8     9     7
     2     3     1
     5     6     4

(2)比特移位:bitshift(不能做循环移位)

    例如:b = bitshift(a,k,n) 其中a是待移位数据,k是移位的位数(正数表示左移),n为移位后保留的位数(当左移,超出的位数将被舍弃)

>> x = 131;
>> x_bit = dec2bin(x)

x_bit =

10000011

>> y = dec2bin(bitshift(x,2,8))

y =

1100

    要想完成bit的循环移位,可以采用这样的方法:

    例如,待移位的数据为x = 3139384450,它是一个32bit的序列,现在需要产生x依此循环左移一位所产生的共32个数据,可以采用以下程序完成:

x = 3139384450;
y = dec2bin(x);     //将10进制变为2进制,这时二进制数据的0,1其实是用字符表示的,这样就形成了一个1x32的行向量

z(1) = x;
for i = 2 : 32
    y = circshift(y,[0,-1]);    //对与每一行的数据进行左移,y的行不换,y的前1列置后
    z(i) = bin2dec(y);          //将移位后的数据再次变为十进制
end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值