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的位置,因此在左移过程中亮灯的数量不变,只是改变了亮灯的位置

posted @ 2021-08-06 09:50  myrj  阅读(1467)  评论(0编辑  收藏  举报