我将通过示例代码找到此操作:
displayMap[x + (y/8)*LCD_WIDTH]|= 1 (shift by) shift;
其中
byte shift = y % 8;
我理解|
操作数和=
,但他们两个在一起做了什么。
答案 0 :(得分:4)
|
对传递的两个操作数执行按位OR。
例如,
byte b = 0x0A | 0x50;
如果查看0x0A
和0x50
的基础位,它们分别为0b00001010
和0b01010000
。与OR运算符结合使用时,b
中的结果为0b01011010
,或十六进制为0x5A
。
|=
类似于+=
和-=
之类的运算符,因为它将对两个操作数执行按位OR,然后将结果存储在左运算符中。
byte b = 0x0A;
b |= 0x50;
// after this b = 0x5A