多字节的移位

2019-07-14 21:11发布

前辈们,指点一下哟。    原来用汇编编程很容易的就进行多字节的移位,现在刚开始学用Keil  C编程,就搞不懂从哪下手
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
wyjie
1楼-- · 2019-07-15 06:19
RRC就搞定了,C怎么弄啊?
wuhany
2楼-- · 2019-07-15 07:05

不懂,帮顶一个
shimx
3楼-- · 2019-07-15 11:44
后10个字节的最高位分别移进其前一字节的最低位?我怎么没明白
wuhany
4楼-- · 2019-07-15 15:05
比如有这些字节要参与移位: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;

   这样子就可以同时将9个字节顺次向前移一位,如果要连续移多位,再加个循环控制就行了。
jiajs
5楼-- · 2019-07-15 17:52
 精彩回答 2  元偷偷看……
shimx
6楼-- · 2019-07-15 22:23
#include <../stdint.h>

#define PORT P1


void delay()
{
uint16_t i;
for(i=0; i<20000; i++);
}


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();
}
}

void main()
{
while(1)
{
  led_8();
}
}

一周热门 更多>