Java基础09:逻辑运算符,位运算符

public class Demo05 {
    public static void main(String[] args) {
        /*逻辑运算符
        与,&&,或,||,非,!
        有点和高中数学集合里面一部分相似
        正确,true,错误,false
        */
        boolean a = true;
        boolean b = false;
        System.out.println("a && b: "+(a&&b));//a && b: false
        //逻辑与运算:两个变量都为真,结果才为真true
        System.out.println("a || b: "+(a||b));//a || b: true
        //逻辑或运算,两个变量有一个或多个为真的,结果就为真true
        System.out.println("! (a && b): "+!(a&&b));//! (a && b): true
        //如果为真,则变为假,如果为假,则变为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        /*程序执行c<4时,发现c<4是错误的
        又因为逻辑与运算,只要其中一个为错就为错
        所以后面的c++<4程序就不会去执行
         */
        System.out.println(c);//5,因为程序并没有执行c++,所以c还是5
        System.out.println(d);//false
    }
}

位运算,&,|,^,~,>>,<<,>>>

#一般只与二进制有关

A = 0011 1100

B = 0000 1101

A&B = 0000 1100,对应位都为1,此位就为1,否则为0

A|B = 0011 1101,对应如果或多个为1,则此位为1,否则为0

A^B = 0011 0001,如果对应位相同则为0,否则为1

~B = 1111 0010,就是取相反的数

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

让计算机计算2*8,计算机不知道是什么意思,可以写成2*2*2*2,计算时每一次都在变大,计算机正常运算的话会在底层去做非常多的事情,但是如果是位运算就会很快

左移<<,右移>>

2<<3 = 16,原因如下

二进制          十进制

0000 0000 = 0

0000 0001 = 1

0000 0010 = 2

0000 0100 = 4

0000 1000 = 8

0001 0000 = 16

0010 0000 = 32

可以发现1每向左移动一位就相当于把数字*2,右移相当于/2

在很多底层算法里面,会用一些位运算来做一些精巧的运算,因为位运算有一个好处,效率高,他是直接跟底层打交道的,效率极其高!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值