欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-18 16:05:15
...

运算符的种类有很多,长相最相近的就要数位运算符和逻辑运算符了。

第一个区别就是运算顺序,位运算符的两端的表达式都要进行计算的,而逻辑运算符则不然,运算完第一个表达式之后如果已经判定整个表达式为真或假以后,便不再运算第二个表达式,这种现象又叫短路现象。以下程序演示了这一现象:

public class Calculate{

	public static void main(String [] args){
		double b=23.4;
		int a=88;
		if(a==88 || (b=90.0)==23.4);
		System.out.println(b);
	}
}

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

        第二个区别就是运算对象的不同,众所周知,计算机只识别二进制补码,位运算符便是先将两端的值运算成二进制补码再进行下一步运算的。

在c语言中,规定0为假,非0即为真,但java中并不是,逻辑运算符两端只接受布尔型数据,即只对true和false进行运算。以下是逻辑运算符的错误示范:

public class Calculate{

	public static void main(String [] args){
		double b=23.4;
		int a=88;
		if(a==88 || b=90.0);
		System.out.println(b);
	}
}

这个程序在c语言中肯定是没有问题的,给b赋值90.0后表达式值便为90.0,非0即为真,但在java中逻辑运算符却不能对其运算,编译结果如下:

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

而按位运算符可以对布尔型运算也可以对数值型进行运算,例如以下代码

public class Firday {

	public static void main(String[] args) {
		System.out.println(true & false);
		System.out.println(2 & 1);
	}
}

在二进制逻辑中true为1,false为0,所以true & false为0001 & 0000=0,所以结果为false

public class Firday {

	public static void main(String[] args) {
		System.out.println(true & false);
		System.out.println(2 & 1);
	}
}

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