三木915

导航

 

逻辑运算

package operator;
//逻辑运算符
public class Project4 {
    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
        System.out.println("!a&&b:"+!(a&&b));//逻辑非运算:运算结果如果是真,则变为假,如果是假则变为真。

        //短路运算
        int c= 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
        /*与运算要两个都是对的如果第一个就是错的话,那么后面程序就不会被执行
        所以在输出c的时候得到的是5,因为c++没有被执行
        下面的前后都执行了所以最后f输出为6
         */

        int f = 5;
        boolean x = (f++<4)&&(f<4);
        System.out.println(x);
        System.out.println(f);

    }
}

位运算

package operator;

public class project5 {
    public static void main(String[] args) {
        /*
        位运算
        A= 0011 1100
        B = 0000 1101
        ----------------------
        A&B = 0000 1100 与运算,只有都是1结果得到的才为1
        A|B = 0011 1101 或运算,只要有1结果就是1
        A^B = 0011 0001 非运算, 00 11 得到的都是0 01得到的才是1
        ~B = 1111 0010  反运算, 将原来的数全部颠倒
        其实把1看成真 把0看成假就好理解了
        与运算中真真才得真
        或运算中有真就得真
       不过在非运算里假假得假  真真得假  假真得真
       <<向左一位
       >>向右一位

       0000 0000    0   0000            0000   这8个0对应的数字位数,1代表有这个数
       0000 0001    1   128 64 32 16 8 4 2 1
       0000 0010    2   <<代表向左移动一位  如00000 0001向左一位就是0000 0010就得到2了
       0000 0011    3   >>代表向右移动一位  如 0000 0010向右一位就是0000 0001就得到1了
       0000 0100    4   <<左移就相当于把这个数字乘以2
       0000 1000    8   >>右移就相当于把这个数字除以2
       0001 0000    16
       位运算和底层运算逻辑打交道,所以位运算很快
         */

    }
}

posted on 2022-01-10 22:18  三木915  阅读(94)  评论(0编辑  收藏  举报