java语言逻辑运算符和位运算符

java语言逻辑运算符和位运算符

一、逻辑运算符

&(与) :左右各接收一个Boolean中有一个为false则返回false,例:

false & true == false;
true & false == false;
false & false == false;
true & true == true;

|(或):左右各接收一个Boolean中有一个为true则返回true,例:

 false | true == true;
 true | true == true;
 true | false == true;
 false | false == false;

!(非):取反后返回,例:

!true == false;
! false == true;

^(异或):左右两个Boolean相同则返回true,不同则返回false,例:

false ^ true == false;
false ^ false == true;
true ^ true == true;
true ^ false == false;

&&(短路与):&&和&运算的返回结果一样,不同之处在于&&有短路效果,如果&&左边是false,则不会执行右边,直接返回false,例:

public class duanLu{
public static void main(String[] args){
    int a = 4;//定义一个变量;
    boolean b = (a<3)&&(a++<10);
    System.out.println("使用短路逻辑运算符的结果为"+b);
    System.out.println("a的结果为"+a);
}
}

上面代码运行结果为:false a的结果为4。这是因为a<3判断为false 短路&&将不再执行后面的a++,直接返回结果。

||(短路或):||和|运算的返回结果一样,两者的区别与&&和&间的区别类似,这里不再累述。

二、位运算
因为计算机底层存储数据是以二进制方式存储,所以java提供我们几种位运算的方法来直接操作二进制补码,这样做的好处是能够提高程序性能。

具体位运算符包括:&(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)

1、<<:左移 空位补0,被移除的高位丢弃。
2、>>:右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
3、>>>:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
以<<为例:

public class Test {

    public static void main(String[] args) {
      int a = 10;
        int b = a<<1;
        System.out.println(b);
        }
    }

上面程序输出输出为20,10的二进制补码为 0000 0110,左移一位得到0000 1100,正好是整数20的补码。其余两个位移操作符同理。
4、&(与),&取得左右两数的二进制补码,如果相对应位都是1,则结果为1,否则为0。
5、,|(或),|取得左右两数的二进制补码,如果相对应位都是0,则结果为0,否则为1。
6、^(异或) ,取得左右两数的二进制补码,如果相对应位值相同,则结果为0,否则为1。异或的特点:一个数据被另一个数据位异或两次,该数本身不变。
7、~(按位取反),按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
例:

0110 0001 & 0001 1111 == 0000 0001;
0110 0001 | 0001 1111 == 0111 1111;
0110 0001 ^ 0001 1111 == 0111 1110;
~0001 1000 == 1000 0111;
10 ^ 9 ^ 9 ==10;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值