Java学习(三)逻辑运算符、位运算符

缪金谷 78 0

Java学习(三)逻辑运算符、位运算符

逻辑与&

当两个条件都为true时,结果为true

(3>2)&(3>1) //前后都为true,所以结果为true
(3<2)&(3>1) //前为false后为true,有一个false,所以结果为false
(3>2)&(3<1) //前为true后为false,有一个false,所以结果为false
(3<2)&(3<1) //前后都为false,所以结果为false


逻辑或|

当两个条件有一个为true时,结果为true

(3>2)|(3>1) //前后都为true,所以结果为true
(3<2)|(3>1) //前为false后为true,有一个true,所以结果为true
(3>2)|(3<1) //前为true后为false,有一个true,所以结果为true
(3<2)&(3<1) //前后都为false,所以结果为false


逻辑异或^

前后结果不一致时,结果为true

(3>2)|(3>1) //前后都为true,前后一致,所以结果为false
(3<2)|(3>1) //前为false后为true,前后不一致,所以结果为true
(3>2)|(3<1) //前为true后为false,前后不一致,所以结果为true
(3<2)&(3<1) //前后都为false,前后一致,所以结果为false


逻辑非!

将原来的结果取反

!(3>2) //原本结果为true 取反后结果为false
!(3<2) //原本结果为false 取反后结果为true


短路与&& 短路或||

什么情况下才会发生短路?当前面的值结果决定最终结果时才会发生短路

短路的是什么?短路的是决定最终结果的条件后面的所有计算过程

只有当发生了短路的情况,相比于逻辑与、逻辑或性能要好一点,否则并没有区别

从执行结果来看,短路与或与逻辑与或并没有区别

短路与&&

当两个条件都为true时,结果为true

当第一个条件为false时,后面的条件将不会再执行


短路或||

当两个条件有一个为true时,结果为true

当第一个条件为true时,后面的条件将不会再执行


二、位(bit)运算

用来计算二进制的

将两个数转换成二进制,竖着对应位置进行&|^的计算,将计算后的二进制转化为十进制

按位与&


按位或|


按位异或^


按位非~

了解一下计算机中的原码、反码、补码

在正数中,反码与补码是其本身如下:

6:

原码:00000000 00000000 00000000 00000110

反码:00000000 00000000 00000000 00000110

补码:00000000 00000000 00000000 00000110

在负数中:

-6:

原码:10000000 00000000 00000000 00000110

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

反码:11111111 11111111 11111111 11111001

负数的补码是在反码的基础上+1

补码:11111111 11111111 11111111 11111010


注意:计算机中,不管是整数还是负数,都是以补码的形式来存储


按位左位移<<

将二进制位数左移,舍弃超出的并以0填充空白

相当于乘以2的左移位数次幂

如:6<<2 = 6*2²


按位右位移>>

将二进制位数右移,并保留符号位

相当于除以2的右移位数次幂并向下取整


按位右位移(无符号)>>>

将二进制位数右移,不保留符号位,使用0补位



目录导航
  • Java学习(三)逻辑运算符、位运算符
      • 逻辑与
      • 逻辑或|
      • 逻辑异或^
      • 逻辑非!
      • 短路与 短路或||
        • 短路与
        • 短路或||
    • 二、位(bit)运算
      • 按位与
      • 按位或|
      • 按位异或^
      • 按位非~
      • 按位左位移<<
      • 按位右位移>>
      • 按位右位移(无符号)>>>
  • 发表评论 (已有0条评论)

    还木有评论哦,快来抢沙发吧~