满意答案
youke7
2013.07.02
采纳率:41% 等级:12
已帮助:4349人
非常简单。如果你是用01字符串来表示二进制,那么matlab有现成的函数circshift可用,方法是:
circshift(a',-n)'
只需要输入二进制字符串a和需要左移的位数n就可以调用来得到答案,举几个例子:
>> a = '10011110'; n = 1; circshift(a',-n)'
ans =
00111101
>> a = '10011110'; n = 2; circshift(a',-n)'
ans =
01111010
>> a = '10011110'; n = 3; circshift(a',-n)'
ans =
11110100
>> a = '10011110'; n = 4; circshift(a',-n)'
ans =
11101001
circshift这个函数本身的第二个参数如果为正则右移,如果为负则左移。而且可以用于移位任何维数的矩阵,不是你问的问题,就不多说了。
如果你不是用01字符串,而是用本身的数值的内部二进制形式,那么有两种方法,一种是用dec2bin函数转换为二进制字符串,在左边添0扩展到你需要的位数,再用如上circshift函数。
另一种方法是用bitshift函数,不过需要自己判断数据类型的长度、有符号还是无符号、以及最高位是1还是0,会稍微复杂一些,通常和fi函数配合可以简化这些问题。具体的可以查看bitshift和fi函数的文档。
00分享举报