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

运算符&与&&,|与||的区别
&和 | 既是逻辑运算符也是位运算符,而&&和||只是逻辑运算符。
&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值