java基础-逻辑运算符位运算符

逻辑运算符、位运算符

逻辑运算符

与 或 非
逻辑与:两个变量都为真,结果才为true

注意逻辑与运算的短路现象(左边为假时,右边代码不执行)

逻辑或:两个变量有一个为真,则结果才回true
package My_Demo.First_Review;

public class Demo03 {
    public static void main(String[] args) {
        //与(and)  或(or)  非(取反)

        boolean a=true;
        boolean b=false;

        System.out.println("a&&b:"+(a&&b));//false
        //逻辑与运算:两个变量都为真,结果才为true
        
        System.out.println("a||b:"+(a||b));//true
        //逻辑或运算:两个变量有一个为真,则结果才回true
        
        System.out.println("!(a&&b):"+!(a&&b));//true
        //如果是真,则变为假,如果是假则变为真

        //短路运算实验
        int  c=5;
        boolean d=(c<4)&&(c++<4);
        System.out.println(d);//false
        System.out.println(c);//5

    }

位运算符

A=0011 1100
B=0000 1101
&(与) |(或) ^(异或) ~(取反)
与运算:A&B(对应位都为1时,才合成1):
0000 1100
或运算:A|B(对应位都为0时,才合成0):
0011 1101
异或运算:A^B(对应位相同时为0,其余为1):
0011 0001
tip:异或运算又称为不进位加法
取反运算:~B(按位取反):
1111 0010

关于:<<(左移) >>(右移)

怎么计算2*8=16最快?

用2 * 2 * 2 * 2?

不对,直接用位运算效率是极高的
<<a <=> *(2^a)
>>a <=> /(2^a)
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16

所以

2*8转换为2<<3

 public static void main(String[] args) {
    /*
    & | ^ ~
    A=0011  1100
    B=0000  1101

    与运算:A&B(对应位都为1时,才合成1):0000 1100
    或运算:A|B(对应位都为0时,才合成0):0011 1101
    异或运算:A^B(对应位相同时为0,其余为1):0011 0001
    tip:异或运算又称为不进位加法
    取反运算:~B(所有为位取反):1111 0010

    <<(左移)  >>(右移) :箭头指向哪 向哪移

    怎么计算2*8=16最快
     用2*2*2*2?
     不对,直接用位运算效率是极高的
    <<a :*(2^a)
    >>a :/(2^a)
    0000 0000   0
    0000 0001   1
    0000 0010   2
    0000 0011   3
    0000 0100   4
    0000 1000   8
    0001 0000   16
     */
        System.out.println(2<<3);16}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值