C 中的按位运算 |= [重复]

问题描述 投票:0回答:1

我正在查看示例代码并发现此操作:

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

哪里

byte shift = y % 8;

我理解

|
操作数和
=
但它们两个放在一起会做什么。

c bit-manipulation bitwise-operators
1个回答
15
投票

|
对传递的两个操作数执行按位或运算。

例如,

byte b = 0x0A | 0x50;

如果您查看

0x0A
0x50
的底层位,它们分别是
0b00001010
0b01010000
。 与 OR 运算符结合使用时,
b
中的结果为
0b01011010
,或十六进制的
0x5A

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

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

// after this b = 0x5A
© www.soinside.com 2019 - 2024. All rights reserved.