逻辑运算符与位运算符

Demo09

逻辑运算符与位运算符

//逻辑运算符   需要做出一些判断,跟大小写差不多
public class Demo09 {
    public static void main(String[] args) {
        //与(and) 或(or) 非(取反)
        boolean a=true;
        boolean b=false;
        System.out.println("a&&b:"+ (a&&b)); //逻辑与运算符:两个变量都为真,结果才为true
        System.out.println( "a||b:"+(a||b)); //逻辑或运算符:两个变量有一个为假,结果为true;两个变量都是false,结果为false
        System.out.println("!(a&&b):"+ !(a&&b)); //逻辑非运算:如果是真则为假,如果是假则为真
        System.out.println("===================");
        //短路运算
        int c=6;
        boolean d=(c<4)&&(c<4);//6
        System.out.println(c);//6
        boolean e=(c>5)&&(c++<4);//只要前面true后面++照样自增
        boolean f=(c<3)&&(c++>2);//前面ture后面false,++自增;前面false 这行++略自增;前false后true ++自增略
        boolean g=(c>3)&&(c++<2);//7
        // System.out.println(d);
        System.out.println(c);//8 c=7+1
        //System.out.println(e);
        System.out.println(f);
        System.out.println(c);//8
        //位运算 不要轻易用位运算,很容易出错的
        /*
        A=1010 0010
        B=1001 0100
        A&B (a与b)  二进制上下比较,上0下0为0,上1下1为1,上1下0为0(<=>)
        A/B (a或b)  二进制上下两位对应都是0,那么结果为0,反之有一个位是1,结果也是1,1对1也是1
        A^B (异或运算) 二进制如果上下两位相同结果为0,否则为1
        ~B (取反/非a即b)  B=...  B=0110 1011 取相反数 零对一一对零
        0000 0000 0
        0000 0001 1   初始值0,个位开进
                    |        |   2进制数
        0000 0010 2   逢2进1位  10
        0000 0011 3   2进1位余1   11
        0000 0100 4   2的2次方 移两位 100
        0000 0101 5   进2位余1 100 1 101
        0001 0000 16  2的4次方 移四位 10000
        0001 0001 17  四位余1 10001
        0001 0011 19  四位/3进1位余1 1 0000 ,1 0010, 1,10011
        << 左移符 *2 乘二 <<意境移动了1位,这里初始值是10(按二进制数)
        >> 右移符 /2 除二
        <<运算符局限于2的次方数
        2*8=16   4-1=3
        3*5=15 0000 0000 | 1111
        2*13=26 1 1010
         */
        System.out.println(2<<3); //2本来就移了1位,这里移动3位就是16
        System.out.println();

    }
}
上一篇:类型转换


下一篇:WebAssembly试玩