单片机C语言中a=~(1<<b)

C语言中
a=~(1<<b)是什么意思?
P1&=0xff;P1|=0x01中的&=和|=是什么意思
单片机C语言新手求指教

a=~(1<<b)是什么意思?
原意:将第B位置1后取反,即清掉第B位IO
P1&=0xff;P1|=0x01中的&=和|=是什么意思
P1&=0xff:相与后传送给P1,即保持P1原值不变;
P1|=0x01:相异或与后传送给P1,即P1赋值为0x01;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-19
~是取反,<<是左移,将1左移a位后赋值给a;
变量 符合赋值运算符 表达式
其功能等价于
变量=变量 运算符 变量;
例如:P1&=0xff等价于p1=p1&0xff
第2个回答  2012-03-19
如果你学过AVR单片机,就会明白这个是将b位取反的命令

这种命令虽然不好读,但能提高程序的移植性
第3个回答  2012-03-19
a=~(1<<b)是移位取反吧;&=是与后赋值,|=是或后赋值追问

1、如果b=4的话,那a等于多少呀?
2、P1&=0xff是和自身求与么?是不是就相当于P1&P1呀?经常在程序开始时看到这样的语句#define xxx P1&=0xff;P1|=0x01非常费解....如果是赋值直接P1=0xff不就好了,P1&=0xff;P1|=0x01不知道是什么意思
小弟是初学者,问的也许有点幼稚,望指教

追答

<<是变量的左移,一般写作b<<1,至于1<<b就不太清楚了
P1&=0xff是p1=p1&0xff ,p1与0xff做与运算然后再赋值给p1,也就是p1口值不变

相似回答