2个回答
展开全部
这是位操作
这句话一说是首先i 向左移一位,再取反,最后i = i + 1
比如 i = 8, 假设 i 是16位,即0X00 08
那么左移一位是0X00 01 00 , 取反 0X FE FF, 然后i 变为0X 00 09
这句话一说是首先i 向左移一位,再取反,最后i = i + 1
比如 i = 8, 假设 i 是16位,即0X00 08
那么左移一位是0X00 01 00 , 取反 0X FE FF, 然后i 变为0X 00 09
追问
谢谢,这个明白了,还有一个地方再请教一下, i %= 8;这句是干什么用的,我发现,去掉这句,就只循环一次,让后就没有了,加上就不停的循环。
void main()
{
uchar i = 0;
while(1)
{
P1 = ~(1 << i++);
delayms(200);
i %= 8;
}
}
追答
i %= 8的意思是 i = i % 8; 也就是把i变成i除以8后的余数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将"1"左移" i"位,然后按位取反,再送p1口,最后 i自增1.
"~"是将右边的表达式按位取反
"~"是将右边的表达式按位取反
追问
谢谢,这个明白了,还有一个地方再请教一下, i %= 8;这句是干什么用的,我发现,去掉这句,就只循环一次,让后就没有了,加上就不停的循环。
void main()
{
uchar i = 0;
while(1)
{
P1 = ~(1 << i++);
delayms(200);
i %= 8;
}
}
追答
%=与+=,-=一样的道理,即i%=8y就是i=i%8.就是使i等于i除以8的余数,也就是使i的值在0~7之间。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询