按位运算| =在C中

时间:2016-11-11 15:41:42

标签: c arduino bit-manipulation bitwise-operators

我将通过示例代码找到此操作:

displayMap[x + (y/8)*LCD_WIDTH]|= 1 (shift by) shift; 

其中

byte shift = y % 8;

我理解|操作数和=,但他们两个在一起做了什么。

1 个答案:

答案 0 :(得分:4)

|对传递的两个操作数执行按位OR。

例如,

byte b = 0x0A | 0x50;

如果查看0x0A0x50的基础位,它们分别为0b000010100b01010000。与OR运算符结合使用时,b中的结果为0b01011010,或十六进制为0x5A

|=类似于+=-=之类的运算符,因为它将对两个操作数执行按位OR,然后将结果存储在左运算符中。

byte b = 0x0A;
b |= 0x50;

// after this b = 0x5A