EDA365电子论坛网

标题: 嵌入式c语言中 &= ~和|=各是什么意思 [打印本页]

作者: MrL1    时间: 2022-1-4 14:55
标题: 嵌入式c语言中 &= ~和|=各是什么意思
例如下列语句,小弟实在不懂这两个符号的意思,望高人指点" A: l. {$ q5 @0 R; |
rINTPND |= BIT_UART0;
; N  B% T+ j: _; E; yrINTSUBMSK &= ~BIT_SUB_RXD0;

0 `7 J5 e  Z8 I2 R. f) K
作者: oewqe    时间: 2022-1-4 17:21
&是按位与(双目运算符,需要2个操作数)4 l, |; ?3 F6 h
|是按位或(双目运算符)
4 D2 O( Y& J2 O. d6 x~是按位非(单目运算符)
7 I0 n3 ]3 r4 J+ G, ?/ g' q/ `1&0=0, 0&1=0, 0&0=0, 1&1=1
9 J3 I7 Y% u+ b9 c$ S1|0=1, 0|1=1, 0|0=0, 1|1=1
4 |' K7 e9 w  ]* ]/ w: N% f~1=0,~0=1& J; M! `. A9 r: c+ d
a|=b等价于a=a|b;% @9 `' o  m# [- b. x6 @* w- D
同理a&=b等价于a=a&b, o0 X! B- b" P
所以rINTPND |=BIT_UART0;等价于rINTPND=rINTPND | BIT_UART0
$ q* h. i1 Y6 ArINTSUBMSK &= ~BIT_SUB_RXD0等价于rINTSUBMSK = rINTSUBMSK &(~BIT_SUB_RXD0)7 n! }- F1 Q! Q
按位运算就是运算的时候先将操作数换算成二进制数来进行计算
" d- \% V2 B" c2 E/ Q: d: g譬如3 & 5就是011 & 101=001
+ M% c- Y2 L3 [; ^

作者: mqerew    时间: 2022-1-4 18:07
再看看其他人是怎么说的
1 E9 {" H/ Q  ]4 F6 w6 D




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2