复合位元OR运算 (|=)

描述

复合位元运算 OR 运算子 (|=) 常用在配合常数 ”设置” 变数内特定的位元至 1。

语法


x |= y; // 等同于 x = x | y;

参数

x: 字元,整数或长整数型别变数。
y: 字元,整数或长整数型别变数。

范例

首先,复习位元运算子 OR(|)

         0 0 1 1    运算子1
         0 1 0 1    运算子2
        
         0 1 1 1    (运算子1 | 运算子2)       回传结果

被常数 0 所 OR 的位元将维持原本的值,设 myByte 是个 byte 型别的变数,

myByte | B00000000 = myByte;

被常数 1 所 OR 的位元将被设置为 1:

myByte | B11111111 = B11111111;

若要将变数位元 0 以及位元 1 的值设置为 1 但保持其他位元的值不变。可将变数与常数 B00000011 做 OR 运算。


         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    变数
         0 0 0 0 0 0 1 1    常数遮罩
         ----------------------
         x x x x x x 1 1
  未改变的位元
                     被设置的位元

因此,若 x 为:

myByte = B10101010;
myByte |= B00000011 == B10101011;

See also

&= (compound bitwise and)
& (bitwise AND)
| (bitwise OR)


语法参考主页面

本页由热血青年 LBU 译自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.