一个关于430单片机,程序语句的问题,请各位多多指教
UCSCTL4|=SELA__XT1CLK+SELS__XT1CLK+SELM__XT1CLK和UCSCTL4=SELA__XT1CLK+SELS__XT1CLK+SEL...
UCSCTL4 | =SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CLK 和
UCSCTL4 =SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CL 到底有什么区别?
能不能帮解释一下, |= 和 =区别在哪?学了一段时间,发现自己对这个问题很迷惑了,求指教,谢谢 展开
UCSCTL4 =SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CL 到底有什么区别?
能不能帮解释一下, |= 和 =区别在哪?学了一段时间,发现自己对这个问题很迷惑了,求指教,谢谢 展开
3个回答
展开全部
这个问题,我也曾经是很难理解,这里牵涉到两个概念
1,|= 和 = 的基本区别
2,UCSCTL4 在上面的两个方式下会发生什么不一样的变化
这样回答你把,可能比较好理解
1,对于 |= 和 = 的基本区别
直接等于的话,是会把原来的UCSCTL4 的值给抹掉,然后再赋给一个全新的值,就是说和原来的值没有任何关系了。
但是|= 呢,和原来的值有直接的关系,只是拉高了 等于 号后面对应位为1的值,而等于号后面位原来为0的值还是0,原来为1的值还是1,举个例子
UCSCTL4 = 0x1F; // (0b1000 1111)
UCSCTL4 = 0x11;
上面的那句话执行之后,就和开始的值为0x1F值没有任何关系了,最后得到的值就是 0x11;
UCSCTL4 = 0x8F;
UCSCTL4 = 0x11; //(0b0001 0001)
这个执行之后,就和原来的0x1F有关系,实际上就做了一个位运算
0b1000 1111
0b0001 0001 ,拉高最后一位,以及倒数第5位和倒数第8位
-----------------
0b1001 1111
最后的值是 0x1F,原来的倒数第8,3,2位,因为和0一起运算,所以本身是1,最后还是1;
2,UCSCTL4 在上面的两个方式下会发生什么不一样的变化,现在你大概能够明白了把,如果把(SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CL)看成我们上面例子的0x11 的话,那么最后的结果,对于两种运算方式来说,一种是和原来的值有关系,一种是和原来的值没有关系。
1,|= 和 = 的基本区别
2,UCSCTL4 在上面的两个方式下会发生什么不一样的变化
这样回答你把,可能比较好理解
1,对于 |= 和 = 的基本区别
直接等于的话,是会把原来的UCSCTL4 的值给抹掉,然后再赋给一个全新的值,就是说和原来的值没有任何关系了。
但是|= 呢,和原来的值有直接的关系,只是拉高了 等于 号后面对应位为1的值,而等于号后面位原来为0的值还是0,原来为1的值还是1,举个例子
UCSCTL4 = 0x1F; // (0b1000 1111)
UCSCTL4 = 0x11;
上面的那句话执行之后,就和开始的值为0x1F值没有任何关系了,最后得到的值就是 0x11;
UCSCTL4 = 0x8F;
UCSCTL4 = 0x11; //(0b0001 0001)
这个执行之后,就和原来的0x1F有关系,实际上就做了一个位运算
0b1000 1111
0b0001 0001 ,拉高最后一位,以及倒数第5位和倒数第8位
-----------------
0b1001 1111
最后的值是 0x1F,原来的倒数第8,3,2位,因为和0一起运算,所以本身是1,最后还是1;
2,UCSCTL4 在上面的两个方式下会发生什么不一样的变化,现在你大概能够明白了把,如果把(SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CL)看成我们上面例子的0x11 的话,那么最后的结果,对于两种运算方式来说,一种是和原来的值有关系,一种是和原来的值没有关系。
展开全部
首先你要知道 | 是或运算.
其次 a|=b , 这样的写法等同于 a=a|b;
最后 UCSCTL4 | =SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CLK
等同于 UCSCTL4 =UCSCTL4 |(SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CLK )
这样的运算也可以扩展为 a+=b,a-=b等等
其次 a|=b , 这样的写法等同于 a=a|b;
最后 UCSCTL4 | =SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CLK
等同于 UCSCTL4 =UCSCTL4 |(SELA__XT1CLK+SELS__XT1CLK + SELM__XT1CLK )
这样的运算也可以扩展为 a+=b,a-=b等等
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
|= 符号前后的值进行或运算后 将值赋给前面的变量
= 仅仅是把后面的值赋给前面的变量
= 仅仅是把后面的值赋给前面的变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询