2016-11-11 64 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