1.作用不同
&&、|| 、!
是逻辑运算符,用于从左到右求表达式的真值。
例:X=1;Y=2;那么X&&Y=1; X||Y=1;
例:F=!F;当F为假时,运算结果为真;
例:while(GPIO_INPUT_GET(GPIO_ID_PIN(5))==0 && C_delay_time<100);//“&&”前面如果判断为真,后面判断也为真,运算结果为真
例:
&、| 、~、^、<<、>>
是位运算符,是对X,Y进行位运算,
例:X=1;Y=2;X&Y=0;X换算为二进制为0001,Y=0010,0001&0010=0;
例:if((DHT11_Data_Array[3]&0x80) == 0);//DHT11_Data_Array[3]&0x80为按位&,后面为逻辑判断,运算结果只有真和假。
2.判断这个表达式的真或假的不同
&和|既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。
当&与&&同为逻辑运算符时,它们都用于连接两个Boolean类型的表达式,当&和&&的两端表达式同时为真时,表达式的结果为真,只要有一端为假,那么表达式结果为假。
例:3>5&3>2;3>5&&3>2;
当|和||的两端表达式同时为假时,表达式的结果为假,只要有一端为真,那么表达式结果为真。
3.计算方式不同
当使用&运算符:计算机在判断表达式的值的时候,先判断3>5的值为假,然后再判断3>2的结果为真,于是最后的结果是假&真为假;
但是当我们使用&&运算符的时候:计算机先判断3>5的值为假,此时表达式的结果一定为假,所以计算
4.总结:
逻辑与、逻辑或、逻辑非是对boolean值得操作,属于离散数学范畴。
按位与、按位或、按位非是对计算机位的操作,属于计算机二进制位运算范畴。
逻辑与都是真才真 &&
逻辑或有真就是真 ||
逻辑韭假才真。!
按位与、按位或、按位非按照上面的规则对每一位进行逻辑运算,其中1代表真 0代表假。
一个是位操作,一个是条件计算操作逻辑运算符用来判断真假;位操作符用来计算。