微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么实现移位补1,算法简单点

怎么实现移位补1,算法简单点

时间:10-02 整理:3721RD 点击:
例如:1111 1110左移位变成1111 1101而不是1111 1100

顶。。

左移然后再或1不就行了吗?多一个语句就行了

不好意思,我没问明白,不过我已经弄好了。其实不只是单独或1,应为在一个多重循环里面,不能简单的或1。不过还是要谢谢你

你能告诉我是怎么弄得吗?你又把我说糊涂了

for(i=0;i<4;i++)
    { P0=SEG_CODE[array];
     DUAN=1;
     DUAN=0;
      
     P0=((P0|0xff)&(0xFE<<i))|(0xf7>>(3-i)); //就是这里,共阴极数码管,循环移位
     WEI=1;
     WEI=0;
     
     
     delay_ms(2);
        
    }

我居然没看懂你这句的功能,求解释

因为你没看到前面的代码,所以正常,
1111 1111 和(1111 1110移位相与,低电平选中依次往左移,但后面就变0了,所以后面有加了部分运算,把0变1。新手,可能方法太笨了,
     
     
     
           
   

虽然还是不明白,但是你弄出来我就高兴了
我也挺笨的其实

LZ为什么要这么麻烦,直接调用函数就可以了
_crol_(要移动的数,移动位数);循环左移         
_cror_(要移动的数,移动位数)循环右移

他要求是低位补1,循环左移好像不行吧

小编或者可以试试_corl_这个库函数,  实现的功能是循环左移  11111110  11111101 11111011  大概是这样、

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top