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

本节教学视频链接:https://www.bilibili.com/video/BV12J41137hu?p=29&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5

1.逻辑运算符

        &&(与)、||(或)、!(非。

ABA&&BA||B!A
00001
01011
10010
11110

        逻辑与运算属于短路运算,既如果第一个操作数能够决定结果,那么就不会对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是假,则无论第二个操作数是什么值,结果都不可能是真,相当于短路了右边。

    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:" + (a&&b)); //输出false   逻辑与运算,两个变量都为true,结果才为true;
        System.out.println("a && b:" + (a||b)); //输出true    逻辑或运算,有一个变量为true,结果就为true;
        System.out.println("a && b:" + !(a&&b));//输出true    逻辑非运算,如果是flase则为true,如果是true则为false;

        //逻辑与运算属于端短路运算
        int c = 10;
        Boolean d = (c<9)&&(c++<9);//因为(c<9)结果为flase,所以程序就不会再去执行(c++<9);
                                   // 如果执行(c++<9)则c最后的值应该为11,如果没有执行(c++<9)则c最后的值还是10
        System.out.println(c);//结果输出10,说明(c++<9)没有被执行;从而直接证明逻辑与运算是短路运算;
        System.out.println(d);

2.位运算符

A =  0011 1100

B =  0000 1101

(与)A&B =  0000 1100
(或)A|B = 0011 1101
(异或)A^B = 0011 0001
(非)~B = 1111 0010

与:两个位都为1,结果为1;其他都为0;(两个都为1,结果为1)

或:两个位有一个位为1,结果为1;两个位都为0,结果为0;(有一个为1,结果就为1)

异或:两个位相同,结果为0;两个位不同,结果为1;(相同为0,不同为1)

3.位运算符中的  <<(左移)、>>(右移)

问题:如何在Java中快速的计算 2*8 ?

0000 0000......................0

0000 0001......................1

0000 0010......................2

0000 0011......................3

0000 0100......................4    2向左移动1位,变成4

0000 1000......................8    4向左移动1位,变成8

0001 0000......................16   8向左移动1位,变成16

从而得出结论, <<(左移)1位,相当于乘以2      >>(右移)1位,相当于除以2;

    public static void main(String[] args) {
        System.out.println(2<<3);//输出16,相当于2*8
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值