您的位置:

java按位与,java按位与和逻辑与的区别举例

本文目录一览:

JAVA中&&和&、||和|的区别?

1、Java中叫做按位与,叫做短路与,它们的区别是:

既是位运算符又是逻辑运算符,的两侧可以是int,也可以是boolean表达式,当两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与()的两侧要求必须是布尔表达式。举例如下:

125 的值是多少?答:12转成二进制数是1100(前四位省略了),5转成二进制数是0101,则运算后的结果为0100即4 这是两侧为数值时;

若 int i = 2,j = 4;则(++i==2)(j++==4)的结果为false,其过程是这样的:先判断++i=2是否成立,这里当然是不成立了(3 == 2),但是程序还会继续判断下一个表达式是否成立,j++==4 ,该表达式是成立的,但是运算符要求运算符两侧的值都为真,结果才为真,所以(++i==2)(j++==4)的结果为 false 注意 :为真的条件是两侧表达式都为真,但是即使我们判断出左侧表达式的值为false,程序也还是要继续执行去判断右侧的表达式值的真假

若 int i = 2,j = 4;则(++i==2)(j++==4)的结果为false,其过程基本上和上面的是相同的,但是若左侧表达式的值为false时,程序则不会继续判断右侧表达式的真假了,短路与中,短路这个词大概也就是这个意思吧

2、Java中‘|’与‘||’的区别

int i=0;

if(32 || (i++)1) i=i+1;

System.out.println(i);

这段程序会打印出1,而不是打印出2。

因为在if的条件判断中,程序先判断第一个表达式32是否成立,结果32为真,那么按照逻辑来说,无论后面一个表达式(i++)1是否成立,整个或表达式肯定为真,因此程序就不去执行判断后面一个表达式即(i++)1了,所以这里i并没有自增1。然后程序执行到i=i+1,于是i变为1。最后打印出1。

int i=0;

if(32 | (i++)1) i=i+1;

System.out.println(i);

如果换做这样写,那么就是打印出2了,因为无论第一个条件32是否为真,程序都会去执行判断第二个条件表达式,因此i++这个自增是会被执行的,再加上if内的i=i+1,所以最终i=2。

有些人习惯把||叫做短路或,把叫做短路与。和的区别和||与|的区别类似,对于来说,如果前面的条件表达式已经为假了,整个条件表达式肯定为假,就不会去执行判断后面的条件表达式。

java中按位与和按位或的问题

按位与

按位或 |

转为二进制操作即可

: 两位同时为“1”,结果才为“1”,否则为0

|: 参加运算的两个对象只要有一个为1,其值为1。

按位与:

5: 0000 0101

9: 0000 1001

1: 0000 0001

按位或:

5: 0000 0101

9: 0000 1001

13: 0000 1101

java中的按位与是如何计算的?麻烦结合6&2说明,谢谢!

6=0000 0110

2=0000 0010

按位与,就是将这两个数字对应的位逐一进行与运算。

结果得0000 0010=2。

java中的按位与是什么意思

按位与是整数运算,整数以二进制形式,每一位进行与运输,例如6与7的计算过程,6和7的二进制分别是110、111,进行与运输要求两个数都为1结果为,否则结果为0,110与111的结果为110,也就是6与7=6。

看明白了吧,我是不是太罗嗦了点~~~