i = 及就移位几位 你希望移位 1 而不是 2,3,4.。。。 |
HC6800-ES-V2.0 发表于 2017-11-16 10:20 谢谢^ω^ |
你的程序,就是这样的嘛,没有问题,只是它不是你想的那样罢了。 我们来看看程序的运行就知道了: 先说这个与你想法一致的:led=(0x01<<i) 0x01=00000001 i=0时,led=00000001 i=1时,led=00000010 i=2时,led=00000100...... 不用再分析下去了,当然是一个一个向左移动的。 再来看看不能按你想法运行的那个:led=0x01;led=(led<<i); 开始时:led=00000001 i=0时,没移位,led=00000001 i=1时,led=00000010 i=2时,以当前的led值移位2位,led=00001000 i=3时,再以当前led值移位3位,led=01000000...... 不用再分析了吧。 综上所述,你想逐位移动,要嘛,用第一种语句;要嘛,第二种情况只能led=(led<<1),即每次只移动一位 |