怎样用matlab实现左移运算
怎样用matlab实现左移运算?希望各位大侠帮忙!谢谢!我要实现的是左移不是循环左移?下面是我写的代码:
m=;是实现左移4位,i是移位前的数。但是结果不对???
回复 楼主 hyhthb 的帖子
左移运算? 可否举例!??a=1:10
a =
1 2 3 4 5 6 7 8 9 10
?n=3;
?b=
b =
4 5 6 7 8 9 10 0 0 0
回复 沙发 ChaChing 的帖子
我也只能按照楼主的帖子瞎猜一下,或许是楼上的意思吧。不过,在计算机术语中有一个“左移运算”,是把一个数值按位左移,不知道这个术语两岸是否一致。
12.7 左移运算符
左移运算的实质是将对应的数据的二进制值逐位左移若干位,并在空出的位置上填0,最高位溢出并舍弃。例如
int a,b;
a=5;
b=a<<2;
则b=20,分析过程如下:
(a)10=(5)10=(0000 0000 0000 0101)2
b=a<<2;
b=(0000 0000 0001 0100)2=(20)10
从上例可以的知b/a=4=22,可以看出位运算可以实现二倍乘运算。由于位移操作的运算速度比乘法的运算速度高很多。因此在处理数据的乘法运算的时,采用位移运算可以获得较快的速度。
提示 将所有对2的乘法运算转换为位移运算,可提高程序的运行效率
[ 本帖最后由 sogooda 于 2009-1-9 22:30 编辑 ]
回复 地板 sogooda 的帖子
谢谢! 又知道些许东东了!将所有对2的乘法运算转换为位移运算,可提高程序的运行效率
[ 本帖最后由 ChaChing 于 2009-1-10 07:39 编辑 ]
回复 5楼 ChaChing 的帖子
刚刚找到,bitshift可以实现移位运算功能,但是只对整数有效。C = bitshift(12, 2)
C =
48
bitshift(5.3,1)
??? Error using ==> bitshift
Inputs must be integers.
其他的位运算函数也列出来供大家参考吧。
bitand
按位与
bitor
按位或
bitxor
按位异或
bitcmp
按位取反
bitget
获取某一位
bitset
设置某一位
[ 本帖最后由 sogooda 于 2009-1-10 14:58 编辑 ]
回复 6楼 sogooda 的帖子
对楼主可能有所帮助! :@) 谢谢大家的热心帮助! 就是sogooda所说的那种,还有一种是循环左移也就是溢出的位放在空位上,比如:a=循环左移2位后a= 原帖由 hyhthb 于 2009-1-14 11:12 发表 http://www.chinavib.com/forum/images/common/back.gif
...a=循环左移2位后a=
这个就要使用circshift !
?a=1:10
a =
1 2 3 4 5 6 7 8 9 10
?n=3;
?b=
b =
4 5 6 7 8 9 10 1 2 3
页:
[1]