51单片机C语言中<<=和|=的意思是什么?

for(i=0;i<8;i++){U8FLAG=2;while((!P2_0)&&U8FLAG++);Delay_10us();Delay_10us();Delay_10... for(i=0;i<8;i++)
{

U8FLAG=2;
while((!P2_0)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(P2_0)U8temp=1;
U8FLAG=2;
while((P2_0)&&U8FLAG++);
//超时则跳出for循环
if(U8FLAG==1)break;
//判断数据位是0还是1

// 如果高电平高过预定0高电平值则数据位为 1

U8comdata<<=1;
U8comdata|=U8temp; //0
}//rof

}
展开
 我来答
风若远去何人留
推荐于2016-07-26 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450107
专业C/C++软件开发

向TA提问 私信TA
展开全部
这两个都是特殊的赋值运算符。这类运算符的形式为OP=,为双目运算符,即需要左右都有操作表达式。其中左侧必须为可改变值的变量,右侧可以为任意表达式。

对于OP=的运算符,其含义为:
aOP=b; 等同于a = a OP b;
对于题目中涉及的两个运算符,分别为:
a <<= b; 等效于a = a << b; 即a左移b位后赋值给a。
左移操作的规则为,高b位舍去,其它依次向高位(左侧)移动b位,低b位添加0。

a|=b;等效于a=a|b;即a与b执行按位或操作,结果赋值给a。
或操作的规则为,按位执行,只有相同位上的值均为0时,结果的对应位上为0,否则结果对应位上为1。
lylxy1965
推荐于2018-02-28 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:215万
展开全部
U8comdata<<=1 相当于 U8comdata = U8comdata<<1,
U8comdata|=U8temp 相当于 U8comdata = U8comdata | U8temp。

类似的还有:+=、 -=、 *= 、 /= 、%=、>>= 、&= 、~= 、 ^=。

这在C语言中叫做复合赋值运算符。格式如下:
变量 复合赋值运算符 表达式
解释:首先对变量进行某种运算(运算符就是"="前的运算符,运算对象就是"="后面的表达式或变量或常数),然后再将结果赋值回该变量(就是“=”)。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woxyzzz
2011-05-11 · TA获得超过122个赞
知道答主
回答量:119
采纳率:0%
帮助的人:91.8万
展开全部
a <<= b; 就是 a = a << b;
a |= b; 就是 a = a | b;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式