位运算符与逻辑运算符的区别

位运算符:

一、位运算符是将数据先转化为二进制补码的形式,再逐(bit)按照规则计算;
①“按位”运算符“&”,规则:全1则1,否则为0;
在这里插入图片描述
②“按位”运算符“|”,规则:全0则0,否则为1;
③“按位”运算符“~”,规则:遇1则0,遇0则1;
(~ 是一个单目运算符,用来对一个二进制位按位取反,即0变成1,1变成0,比如~00001111=11110000。)
④“按位异或”运算符“^”,规则:相同为0,否则为1
二、注意:
①按位异或运算是可逆的,即如果对某个数据进行两次相同的异或运算,则结果会还原为a,例如:
3 ^ 5 = 6;
6 ^ 5 = 3;

逻辑运算符:

逻辑运算符有三种:逻辑且:&&;逻辑或:||;逻辑非:!;

在这里插入图片描述在这里插入图片描述 ①逻辑与:&&,在判断时只有符号左右两端为真时(true&&true),该条件才成立。

		int a=2,b=3,c=4;
		if((a<b)&&(c>b)){
			System.out.println(1);
		}
		else{
			System.out.println(0);
		}

因此,此代码输出的结果为1。
但是如果修改代码为:

		int a=2,b=3,c=4;
		if((a>b)&&(c>b)){
			System.out.println(1);
		}
		else{
			System.out.println(0);
		}

此时,程序输出0。
②逻辑或:||在判断时只要符号左右两端有真时,条件就成立(true&&true,true&&false,false&&true三种情况 )

		int a=2,b=3,c=4;
		if((a>b)||(c>b)){
			System.out.println(1);
		}
		else{
			System.out.println(0);
		}

此代码中a>b为假,但c>b为真,所以整个语句为真,输出1。
修改代码为:

		int a=2,b=3,c=4;
		if((a>b)||(c<b)){
			System.out.println(1);
		}
		else{
			System.out.println(0);
		}

此时,代码输出0,可见||只有当两端都为假时,才假。
③逻辑非:!表示否定意思。
条件判断是,经常与=连用,表示不等于。
例如:

		int a=10;
		if(a!=10){
			System.out.println("true");
		}
		else{
			System.out.println("false");
		}

此代码输出结果为:false

逻辑运算符与位运算符的区别

逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。

int a=10;
int b=10;
if((a=0)==0||(b=20)==20)
{
	System.out.println("b="+b);
}
/*(a = 0) == 0为true,逻辑或中有一个为真即成立,
Java程序不会执行(b = 20)==20,所以结果为10。*/
int x=10;
int y=10;
if(((x=0)==0)|(y=20)==20)
{
	System.out.println("y="+y);
}
/*由于要进行按位或运算,所以先计算|左右两边的值,即true|true,而
true在二进制逻辑中为1,由此可知true|true的二进制结果依然为1,但是
二进制1在boolean类型中表示true,所以输出结果为20。*/
发布了18 篇原创文章 · 获赞 2 · 访问量 334

猜你喜欢

转载自blog.csdn.net/bravery__/article/details/103449224
今日推荐