按位运算|=在C中[一式两份]

zphenhs4  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(110)
    • 此问题在此处已有答案**:

What does |= mean in c++ [duplicate](2个答案)
六年前关闭了。
我正在浏览示例代码,发现了以下操作:

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

其中

byte shift = y % 8;

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

s4n0splo

s4n0splo1#

|对其传递的两个操作数执行按位OR运算。
例如,

byte b = 0x0A | 0x50;

如果您查看0x0A0x50的底层位,它们分别是0b000010100b01010000。当与OR运算符结合使用时,b中的结果是0b01011010或十六进制的0x5A
|=类似于+=-=等运算符,因为它将对两个操作数执行按位OR,然后将结果存储在左运算符中。

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

// after this b = 0x5A

相关问题