运算符&与&&,|与||的区别、进制转换

39. 运算符&与&&,|与||的区别、进制转换

● 运算符&与&&,|与||的区别   

&和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。

&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型

&与| 既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型

● 区别:

if (A && B) 如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。

if (A & B) 如果 A 为 false ,整个表达式就为 false,但还要计算 B 的值

if (A && B++) 如果A 为 false,&&不会再计算后面的值

if (A & B++) 如果A 为 false,&则会计算后面的值

案例:

int i=1;

if(i==2 & i++==2){} //i==2为false,但i++==2还会继续比较,所以i++被执行

System.out.println(i);//i 打印出来为2

int j=1;

if(j==2 && j++==2){} //j==2为false,但j++==2不会继续比较,所以j++不被执行

System.out.println(j);//j打印出来为1

● 逻辑运算符&与&&的区别是:

& 无论左边结果是什么,右边还是继续运算;

&&当左边为假,右边不再进行运算。就效率而言,这个更好

但是两者的结果是一样的。&&和||是比较高效那么一点点。

● 对于整型,& 和 | 计算操作数的按位“与”。例如: 5&3

&:将两个表达式的值按二进制位展开,对应的位按值进行“与”运算,结果保留在该位上。

运算规则:该位只要有一个值为0结果为0,否则结果为1。如果两数位数不同,则较短数高位补零,再运算。

0&0=0; 0&1=0; 1&0=0; 1&1=1;

0 1 

2的0次方是1

3&5 即 0000 0011 & 0000 0101 = 0000 0001 ;因此,3&5的值得1。

    0000 0011

& 0000 0101

--------------------

    0000 0001

170&204对应二进制就是10101010&11001100=10001000

170&204=136

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值