[应用相关] 多字节移位不懂从哪下手

[复制链接]
1099|14
 楼主| houcs 发表于 2019-4-16 18:28 | 显示全部楼层 |阅读模式
原来用汇编编程很容易的就进行多字节的移位,现在刚开始学用Keil  C编程,就搞不懂从哪下手
zyf部长 发表于 2019-4-16 18:31 | 显示全部楼层
比如一次性移位11个字节,比如左移,将最高字节的最高位移出丢失,并将下一字节的最高位移进前一字节的最低位
xxmmi 发表于 2019-4-16 18:35 | 显示全部楼层
后10个字节的最高位分别移进其前一字节的最低位?我怎么没明白
gongche 发表于 2019-4-16 18:38 | 显示全部楼层
比如有这些字节要参与移位: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个字节顺次向前移一位
huwr 发表于 2019-4-16 18:44 | 显示全部楼层
如果字节数是2,3,4时可以将数据类型定义为int或是long,
unsigned int dat;
dat<<11;
huanghuac 发表于 2019-4-16 18:47 | 显示全部楼层
void led_8()
{
uint8_t i;
uint8_t tmp = 0x01;
for(i=0; i<8; i++)
{
  PORT =  ~(tmp<<i);//左移
  delay();
}
happy_10 发表于 2019-4-16 18:50 | 显示全部楼层

6楼的可以参考下,应该可以实现。
 楼主| houcs 发表于 2019-4-16 18:53 | 显示全部楼层

结贴了,多谢大家讨论这么多哈,呵呵
hu9jj 发表于 2019-4-16 19:36 | 显示全部楼层
一群马甲,有意思么?
磨砂 发表于 2019-5-8 08:20 | 显示全部楼层
有左移和右移啊
晓伍 发表于 2019-5-8 08:28 | 显示全部楼层
多读读别人的代码
八层楼 发表于 2019-5-8 08:37 | 显示全部楼层
多写代码 多百度 就会了
观海 发表于 2019-5-8 08:44 | 显示全部楼层
多读读代码 啊
guanjiaer 发表于 2019-5-8 08:47 | 显示全部楼层
不会用汇编语言
labasi 发表于 2019-5-8 09:05 | 显示全部楼层
先写简单的程序跑跑就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部