本文目录一览:
- 1、java中按位与和按位或的问题
- 2、java中的按位与是什么意思
- 3、java:为什么按位与运算符可以用来判断奇偶 "(i&1)!=0"
- 4、JAVA中&&和&、||和|的区别?
- 5、java中的按位与是如何计算的?麻烦结合6&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与7的计算过程,6和7的二进制分别是110、111,进行与运输要求两个数都为1结果为,否则结果为0,110与111的结果为110,也就是6与7=6。
看明白了吧,我是不是太罗嗦了点~~~
java:为什么按位与运算符可以用来判断奇偶 "(i&1)!=0"
两个操作数分别转换为二进制码之后,对应位置的进制数比较,同为1则返回1。
1的二进制码只有最低位的一位,也就是1,而左边其它的位对应的进制码(不管是0还是1)都要和2的幂运算相乘再想加,肯定是偶数。所以,最低位的进制码决定了这个数的奇偶。
为1则是奇数,0为偶数。
或者,由二进制的计算规则知道,二进制码由余数组成,所以,最后一位也是最后一次相除的余数,为1则是奇数。
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中的按位与是如何计算的?麻烦结合6&2说明,谢谢!
6=0000 0110
2=0000 0010
按位与,就是将这两个数字对应的位逐一进行与运算。
结果得0000 0010=2。