发新帖我要提问
12
返回列表
打印
[应用相关]

怎么样进行移位

[复制链接]
楼主: feiqi1
手机看帖
扫描二维码
随时随地手机跟帖
21
51xlf| | 2018-5-14 16:30 | 只看该作者 回帖奖励 |倒序浏览
可以移0到31位了,t = t<<31;

使用特权

评论回复
22
mmbs| | 2018-5-14 16:30 | 只看该作者
用汇编编程很容易的就进行多字节的移位

使用特权

评论回复
23
i1mcu| | 2018-5-14 16:30 | 只看该作者
移位33次和移位1次得到的结果相同

使用特权

评论回复
24
pmp| | 2018-5-14 16:30 | 只看该作者
高位移出舍弃,低位的移入补零;

使用特权

评论回复
25
lzbf| | 2018-5-14 16:30 | 只看该作者
连续空间都看成连续的内存字节,则只需要一个字节

使用特权

评论回复
26
androidbus| | 2018-5-14 21:23 | 只看该作者
汇编的时候有RRL,RRC就搞定了,C怎么弄啊?

使用特权

评论回复
27
litengg| | 2018-5-14 21:26 | 只看该作者
后10个字节的最高位分别移进其前一字节的最低位?

使用特权

评论回复
28
qiangweii| | 2018-5-14 21:28 | 只看该作者
比如有这些字节要参与移位:unsigned char  a[]={0xfe,0x25,0x32,0x56,0x4e,0x56,0xab,0xef,0xf3}:

   a[i]=a[i]<<1|((a[i+1]&0x80)? 1:0);      //    i 由0到7 。

   a[8]=a[8]<<1;

使用特权

评论回复
29
shashaa| | 2018-5-14 21:31 | 只看该作者
其实也不麻烦
比如要执行 RL (左移一位)
可以先取最低字节, RLC (把移出的高位保存在 C ) 然后依次高字节都读入

使用特权

评论回复
30
hfdy01| | 2018-5-14 21:33 | 只看该作者
执行 RLC 指令 后写回. 所有字节都执行完, 也就完成了一次左移操作.

使用特权

评论回复
31
CallReceiver| | 2018-5-14 21:35 | 只看该作者
void led_8()
{
uint8_t i;
uint8_t tmp = 0x01;
for(i=0; i<8; i++)
{
  PORT =  ~(tmp<<i);//左移
  delay();
}
tmp = 0x80;
for(i=0; i<8; i++)
{
  PORT =  ~(tmp>>i);//右移
  delay();
}
}

使用特权

评论回复
32
boy1990| | 2018-5-14 21:36 | 只看该作者
如果字节数是2,3,4时可以将数据类型定义为int或是long,

使用特权

评论回复
33
sourceInsight| | 2018-5-14 21:38 | 只看该作者
我能想到的办法就是“用指针跳转”了,实在不行就“C+汇编”混编吧。

使用特权

评论回复
34
ziye听雨| | 2018-5-15 10:56 | 只看该作者
写个移位函数就可以了  移位长度传参数限定

使用特权

评论回复
35
kingkits| | 2018-5-16 09:45 | 只看该作者
如果不考虑效率,就一个字节一个字节地慢慢移,有多少个字节的数据都能完成
如果考虑效率,那就各出奇招了,
汇编,还有其他的----比如FPGA 都有用的,看你的需求

使用特权

评论回复
36
sky.sun.zz| | 2018-5-16 09:49 | 只看该作者
位(Bit)可以移位,字节(Byte)如何移位??

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则