(&& ) 按位与 和 (&) 逻辑与有什么区别?

如题所述

按位与和逻辑与的区别如下:

①代表含义不同

按位与运用二进制进行计算,逻辑与比较符号两边的真假输出逻辑值。

②运算法则不同

按位与对所有的表达式都要判断,逻辑与运算符第一个表达式不成立的话,后面的表达式不运算,直接返回。

③输出不同

按位与&输出运算结果为不同的数值,逻辑与 && 输出逻辑值true或者 false。

例如: 按位与1&2=0;逻辑与1&&2=true(一般用数字1代指ture)。



扩展资料

按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。

按位与规则

1&1=1

1&0=0

0&1=0

0&0=0

逻辑与,符号为“&&”,只有两个操作数都是真,结果才是真。 逻辑与操作属于短路操作,既如果第一个操作数能够决定结果,那么就不会对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是假,则无论第二个操作数是什么值,结果都不可能是真,相当于短路了右边。

逻辑与规则

1&&1=1

1&&0=0

0&&1=0

0&&0=0

参考资料来源:百度百科-按位与

参考资料来源:百度百科-逻辑与

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-06
姐姐,你说反了,&&是逻辑与 即判断&&两侧的表达式是否都为真,都为真则此&&表达式值为真;& 是按位与 即将&两侧的数用二进制展开,每一位都求与运算(二进制与运算,跟逻辑与差不多),最后得到的二进制数即为结果;逻辑与结果只讲真和假,而按位与得出的却是实实在在的一个数本回答被提问者采纳
第2个回答  推荐于2017-11-24

&&和||是用于条件判断,而&和|是位运算。

· 【&】

//相当于二进制减法;

//计算原理:数值转成二进制 > 二进制相减(遇0为0) > 再将二进制计算结果转成数值;

(1&1) = (0001 - 0001 = 0001) = 1
(1&2) = (0001 - 0010 = 0000) = 0
(2&2) = (0010 - 0010 = 0010) = 2
(7&5) = (0111 - 0101 = 0101) = 5
(7&8) = (0111 - 1000 = 0000) = 0
(8&4) = (1000 - 0100 = 0000) = 0

//如:true = 0001, false = 0000
(true|false) = (0001 - 0000 = 0000) = false
(true|true) = (0001 - 0001 = 0001) = true
(false|false) = (0000 - 0000 = 0000) = false

· 【|】

//相当于二进制加法;

//计算原理:数值转成二进制 > 二进制相减(遇1为1) > 再将二进制计算结果转成数值;

(1|1) = (0001 + 0001 = 0001) = 1
(1|2) = (0001 + 0010 = 0011) = 3
(2|2) = (0010 + 0010 = 0010) = 2
(7|5) = (0111 + 0101 = 0111) = 7
(7|8) = (0111 + 1000 = 1111) = 15
(8|4) = (1000 + 0100 = 1100) = 12

//如:true = 0001, false = 0000
(true|false) = (0001 + 0000 = 0001) = true

(true|true) = (0001 + 0001 = 0001) = true

(false|false) = (0000 + 0000 = 0000) = false

· 【&&】

//条件与

//其中一方为false则返回false

//左右两方同时为true则返回true

(true&&false) = false

(true&&true  ) = true

(false&&false) = false


· 【||】

//条件或

//其中一方为true则返回true

//左右两方同时为false则返回false

(true || false) = true

(true || true  ) = true

(false || false) = false


本回答被网友采纳
第3个回答  2011-08-17
其实他们之间有一个很大的差别:短路
举个例子来解释一下吧,
false&true-->false
false&&true-->false
单从结果上看,他们结果是一样的,都是false
但是前者在运行的时候,计算机首先判断第一个条件为false,然后判断第二个条件true,然后判断出结果为false
而后者,首先也是判断第一个条件,当判断出为false时,程序立即终止,因为不管第二个条件是什么,结果一定为false
这就是他们之间的区别

希望我的回答能对你有所帮助
第4个回答  2017-12-05
#include<stdio.h>
int main()
{
int i=0,j=0;
if(i--&i--)
printf("The true i is %d\n",i);
else
printf("The false i is %d\n",i);
if((j--)&&(j--))
printf("The true j is %d\n",j);
else
printf("The false j is %d\n",j);
}
//输出结果:The false i is -2 The false j is -1;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网