复合位或

来自YFRobotwiki
2017年9月10日 (日) 20:20Allblue讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索


描述

复合位与(&=)经常被用来设置变量或者常量的某一位为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论坛