51单片机c语言,请解释一下这句的意思,还有=~的意思?提前谢谢了?

P1=~(1<<i++);... P1 = ~(1 << i++); 展开
 我来答
NormaL08
2014-06-29 · TA获得超过479个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:155万
展开全部
这是位操作
这句话一说是首先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后的余数。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c864453b5
2014-06-29
知道答主
回答量:23
采纳率:0%
帮助的人:16.5万
展开全部
将"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之间。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式