打印
[STM32F1]

多字节移位不懂从哪下手

[复制链接]
502|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2021-3-15 23:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原来用汇编编程很容易的就进行多字节的移位,现在刚开始学用Keil  C编程,就搞不懂从哪下手

使用特权

评论回复
沙发
zyf部长| | 2021-3-15 23:48 | 只看该作者
比如一次性移位11个字节,比如左移,将最高字节的最高位移出丢失,并将下一字节的最高位移进前一字节的最低位

使用特权

评论回复
板凳
xxmmi| | 2021-3-15 23:50 | 只看该作者
后10个字节的最高位分别移进其前一字节的最低位?我怎么没明白

使用特权

评论回复
地板
gongche| | 2021-3-15 23:52 | 只看该作者
比如有这些字节要参与移位: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个字节顺次向前移一位

使用特权

评论回复
5
huwr| | 2021-3-15 23:54 | 只看该作者
如果字节数是2,3,4时可以将数据类型定义为int或是long,
unsigned int dat;
dat<<11;

使用特权

评论回复
6
huanghuac| | 2021-3-15 23:56 | 只看该作者
void led_8()
{
uint8_t i;
uint8_t tmp = 0x01;
for(i=0; i<8; i++)
{
  PORT =  ~(tmp<<i);//左移
  delay();
}

使用特权

评论回复
7
happy_10| | 2021-3-15 23:57 | 只看该作者
6楼的可以参考下,应该可以实现。

使用特权

评论回复
8
chenho| | 2021-3-16 21:41 | 只看该作者
有左移和右移啊

使用特权

评论回复
9
happy_10| | 2021-3-16 22:12 | 只看该作者
多读读别人的代码

使用特权

评论回复
10
stly| | 2021-3-16 22:18 | 只看该作者

多写代码 多百度 就会了

使用特权

评论回复
11
tian111| | 2021-3-16 22:25 | 只看该作者
多读读代码 啊

使用特权

评论回复
12
xxrs| | 2021-3-16 22:28 | 只看该作者
不会用汇编语言

使用特权

评论回复
13
yinxiangh| | 2021-3-16 22:30 | 只看该作者
先写简单的程序跑跑就知道了

使用特权

评论回复
14
houcs|  楼主 | 2021-3-16 22:34 | 只看该作者
多谢大家讨论这么多哈,呵呵

使用特权

评论回复
15
xiaoqizi| | 2021-4-6 19:12 | 只看该作者
想怎么移位啊

使用特权

评论回复
16
木木guainv| | 2021-4-6 19:15 | 只看该作者
多读读代码

使用特权

评论回复
17
aoyi| | 2021-4-6 19:20 | 只看该作者
自己随便写一个 然后调试一下就知道是怎么回事了

使用特权

评论回复
18
drer| | 2021-4-6 19:20 | 只看该作者
多读多写 没啥好办法

使用特权

评论回复
19
gwsan| | 2021-4-6 19:20 | 只看该作者
没有太快捷的办法 自己多看看代码吧

使用特权

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

本版积分规则

743

主题

8382

帖子

5

粉丝