C语言单片机:左移与右移


b=a<<n 等价于b=a*2^n(左移后是左移前的2^n倍:变大)

b=a>>n 等价于b=a/2^n(右移前是右移后的2^n倍  变小)
说个容易记的
左移n位就是将数转为二进制后 右面加n个零 左面的n位舍弃
右移n位就是将数转为二进制后 左面加n个零 右面的n位舍弃

在单片机中控制LED灯假设低电平亮时,不管是左移还是右移,都是补0,所以亮的灯越来越多。

_cror_(P1,1):循环右移,被移出的放在最高位,来回循环,所以P1中0和1的位数不变,只是改变了0 1的位置,因此在右移过程中亮灯的数量不变,只是改变了亮灯的位置

_crol_(P1,1):循环左移,被移出的放在最低位,来回循环,所以P1中0和1的位数不变,只是改变了0 1的位置,因此在左移过程中亮灯的数量不变,只是改变了亮灯的位置


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM