嵌入式c语言中 &= ~和|=各是什么意思
rINTPND |= BIT_UART0;
rINTSUBMSK &= ~BIT_SUB_RXD0; 展开
|是按位或(双目运算符)
~是按位非(单目运算符)
1&0=0, 0&1=0, 0&0=0, 1&1=1
1|0=1, 0|1=1, 0|0=0, 1|1=1
~1=0,~0=1
a|=b等价于a=a|b;
同理a&=b等价于a=a&b
所以rINTPND |=BIT_UART0;等价于rINTPND=rINTPND | BIT_UART0
rINTSUBMSK &= ~BIT_SUB_RXD0等价于rINTSUBMSK = rINTSUBMSK &(~BIT_SUB_RXD0)
按位运算就是运算的时候先将操作数换算成二进制数来进行计算
譬如3 & 5就是011 & 101=001
&是按位与(双目运算符,需要2个操作数)
|是按位或(双目运算符)
~是按位非(单目运算符)
1&0=0, 0&1=0, 0&0=0, 1&1=1
1|0=1, 0|1=1, 0|0=0, 1|1=1
~1=0,~0=1
a|=b等价于a=a|b;
同理a&=b等价于a=a&b
所以rINTPND |=BIT_UART0;等价于rINTPND=rINTPND | BIT_UART0
rINTSUBMSK &= ~BIT_SUB_RXD0等价于rINTSUBMSK = rINTSUBMSK &(~BIT_SUB_RXD0)
按位运算就是运算的时候先将操作数换算成二进制数来进行计算
譬如3 & 5就是011 & 101=001
扩展资料
/* NAND FLASH (see S3C2410 manual chapter 6) */typedef struct {
S3C24X0_REG32 NFCONF;
S3C24X0_REG32 NFCMD;
S3C24X0_REG32 NFADDR;
S3C24X0_REG32 NFDATA;
S3C24X0_REG32 NFSTAT;
S3C24X0_REG32 NFECC;
} S3C2410_NAND;static S3C2410_NAND * s3c2410nand = (S3C2410_NAND
*)0x4e000000;volatile unsigned char *p = (volatile unsigned char *)&s3c2410nand->NFSTAT;
参考资料:百度百科 - 嵌入式c语言
|= 是打开的意思