单片机 移位相加问题

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-30
单片机 移位 问题

0x7f:0111,1111
>>1
______________
=0011,1111
移位后,最低位的1移出去了,最高位补0。不是循环移位。
可以自己实现循环移位功能:
unsigned char i;
for(i=128;i>0;i=i/2)
{
P0= 0xff - i ; //假设P0输出0时LED亮
delay_ms(100); //延时100ms

//如果要LED一直挨个放光,把下一行的注释去掉
//if(i==1) i=128;
}

m的值不变,保持1
m<<=i才是左移后赋值给m

8位单片机,输出有8位,设为1010 1100,高四位右移四位前面要补4个0是0000 1010,再与低四位相加就是00001010+00001100,结果是高四位为0,低四位的值是原来高四位与低四位相加的值。

单片机中数据输出高四位右移四位与低四位相加后结果

这句话,太长了,难以理解。

楼主先给解释一下吧。

或者,加上几个逗号,句号。