我正在查看示例代码并发现此操作:
displayMap[x + (y/8)*LCD_WIDTH]|= 1 (shift by) shift;
哪里
byte shift = y % 8;
我理解
|
操作数和 =
但它们两个放在一起会做什么。
|
对传递的两个操作数执行按位或运算。
例如,
byte b = 0x0A | 0x50;
如果您查看
0x0A
和 0x50
的底层位,它们分别是 0b00001010
和 0b01010000
。 与 OR 运算符结合使用时,b
中的结果为 0b01011010
,或十六进制的 0x5A
。
|=
类似于 +=
和 -=
等运算符,它将对两个操作数执行按位 OR,然后将结果存储在左侧操作数中。
byte b = 0x0A;
b |= 0x50;
// after this b = 0x5A