2016-11-11 35 views
-7

我会通过示例代码,发现这个操作:位运算| =用C

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

其中

byte shift = y % 8; 

我明白|操作数和=但什么是他们两个人在一起做。

+0

他们正是这样做,按位或*和*分配,一气呵成。 –

+2

'| ='是做'OR'操作和赋值的简写。例如,'x | = 3'等价于'x = x | 3'。您也可以以这种方式使用其他运算符('+, - ,*,&'等)。 – yano

+5

在提出这些问题之前,请先阅读一本关于C编程的书。 – i486

回答

2

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

例如,

byte b = 0x0A | 0x50; 

如果你看一下0x0A0x50底层位,他们分别是0b000010100b01010000。与OR运算符结合时,b中的结果为十六进制的0b010110100x5A

|=类似于如0​​和-=这样的运算符,因为它将对两个操作数执行按位或运算,然后将结果存储在左侧运算符中。

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

// after this b = 0x5A