求解单片机中C编的几个指令 temp <<= 1 和temp << 1的区别 if(!(P1 & temp)) 这个是什么意思?

如题所述

temp << 1;计算 temp 左移一位的值,语句结束后temp没有变化

temp <<= 1相当于temp=temp << 1
也就是 计算 temp 左移一位的值,并把这个值赋给temp

if(!(P1 & temp)) 就是 计算 P1 与 temp按位与运算的值,然后判断这个值是否为0
if(!(P1 & temp))
{
//P1 与 temp按位与运算的值为0时会执行到这里
}
else
{
//P1 与 temp按位与运算的值不为0时会执行到这里
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-07
temp <<= 1是指temp左移1位,再送回temp,相当于temp=(temp<<1)。
temp <<=1是将temp左移1位。
if(!(P1 & temp)) 是指如果P1的值和temp的值相与的结果为0,就执行if语句后面的操作。
第2个回答  2010-10-07
temp << 1 是把temp左移1位

temp <<= 1 是把 temp << 1 的结果赋值给 temp

if(!(P1 & temp)) 是判断P1与temp按位与的结果是否不为0

参考资料:http://hi.baidu.com/%BC%C5%C4%AF937000078/blog

相似回答