Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
位运算|=在C中_C_Arduino_Bit Manipulation_Bitwise Operators - Fatal编程技术网

位运算|=在C中

位运算|=在C中,c,arduino,bit-manipulation,bitwise-operators,C,Arduino,Bit Manipulation,Bitwise Operators,我正在浏览示例代码,发现此操作: displayMap[x + (y/8)*LCD_WIDTH]|= 1 (shift by) shift; 在哪里 byte shift = y % 8; 我理解|操作数和=但它们两个一起做什么。|对传递的两个操作数执行按位OR运算 比如说, byte b = 0x0A | 0x50; 如果查看0x0A和0x50的底层位,它们分别是0b00001010和0b01010000。与OR运算符组合时,b中的结果为0b01011010,或十六进制的0x5A |=

我正在浏览示例代码,发现此操作:

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

byte shift = y % 8;
我理解|操作数和=但它们两个一起做什么。

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

比如说,

byte b = 0x0A | 0x50;
如果查看0x0A和0x50的底层位,它们分别是0b00001010和0b01010000。与OR运算符组合时,b中的结果为0b01011010,或十六进制的0x5A

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

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

// after this b = 0x5A

它们一气呵成,按位或和赋值。|=是进行或运算和赋值的简写。例如,x |=3相当于x=x | 3。你也可以以这种方式使用其他操作符+、-、*、&,等等。这是一个教程,所以你甚至可以在那里学习更多的C基础知识。