“复合位或”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
(以“ {| border="0" cellpadding="20" width="100%" |- |width="100%" valign="top" align="left"| <font color="orange" size="+1">'''描述'''</font> 复合位与(&=)经常...”为内容创建页面)
 
 
第42行: 第42行:
 
 与1经过或运算的位将变为1.
 
 与1经过或运算的位将变为1.
 
<pre style="color:dimgray">
 
<pre style="color:dimgray">
myByte | B11111111 B11111111;
+
myByte | B11111111 = B11111111;
 
</pre>
 
</pre>
  
第55行: 第55行:
 
                      位设置
 
                      位设置
 
*/
 
*/
  myByte =  10101010;
 
  myByte &= B1111100 == B10101000;
 
 
</pre>
 
</pre>
  
第71行: 第69行:
 
 同理
 
 同理
 
<pre style="color:dimgray">
 
<pre style="color:dimgray">
myByte = B10101010;
+
myByte = B10101010;
+
 
myByte | = B00000011 == B10101011;
+
myByte |= B00000011 == B10101011;
 
</pre>
 
</pre>
  

2017年9月10日 (日) 20:20的最后版本


描述

复合位与(&=)经常被用来设置变量或者常量的某一位为0。代码中,常被用作"清零"或者"重置"变量的某位。 复合位或操作符(| =)经常用于变量和常量“设置”(设置为1),尤其是变量中的某一位。


语法

x |= y;       // 相当于 x = x | y; 


参数

x: 字符型,整型,长整型变量

y: 字符型,整型,长整型常量


示例

先来看下按位或(|)的用法

   0  0  1  1    运算元1
   0  1  0  1    运算元2
   ----------
   0 1 1 1(运算元1 | 运算元2) - 返回的结果

如果变量myByte中某一位与0经过按位或运算后不变。

myByte | B00000000 = myByte;

与1经过或运算的位将变为1.

myByte | B11111111 = B11111111;

因此 - 设置变量的某些位为0和1,而变量的其他位不变,可与常量B00000011进行按位与运算(| =)

/*
   1  0  1  0  1  0  1  0    变量 
   0  0  0  0  0  0  1  1    掩码
   ----------------------
   1  0  1  0  1  0  1  1  
  没有发生变化的位数
                     位设置
*/

接下来的操作相同,只是将变量用x代替

   x  x  x  x  x  x  x  x    variable
   0  0  0  0  0  0  1  1    mask
   ----------------------
   x  x  x  x  x  x  1  1
  没有发生变化的位数
                     位设置

同理

myByte =  B10101010;

myByte |= B00000011 == B10101011;



扩展阅读

- &=(复合位与)
- &(位与)
- |(位或)




返回Arduino语法参考列表

更多建议和问题欢迎反馈至 YFRobot论坛