Java笔记第九课:逻辑运算符和位运算符


逻辑运算符 位运算符


逻辑运算符

与 (and)或(or) 非(取反)

逻辑与运算

两个变量都为真,结果才为true

public class Dome1 {
   //逻辑运算符:&& || !
   public static void main(String[] args) {
       int a = 20;
       int b = 30;
       boolean vae = (a>10)&&(b<50);//逻辑与运算:两个变量都为真,结果才为true
       System.out.println(vae);//输出true(因为a>10,b<50,变量成立,所以为true)
?
  }
}
?

逻辑或运算

一个结果为真,结果就为true

public class Dome1 {
   //逻辑运算符:&& || !
   public static void main(String[] args) {
       int a = 20;
       int b = 30;
       boolean vae = (a<10)||(b<50);//逻辑或运算:两个变量中一个为真,结果才为true
       System.out.println(vae);//输出true(虽然a<10不成立,但b<50成立,所以为true)
?
  }
}
?

取反

真则为假,假则为真

public class Dome1 {
   //逻辑运算符:&& || !
   public static void main(String[] args) {
       int a = 20;
       int b = 30;
       boolean vae1 = (a<10)&&(b<50);
       boolean vae2 = (a<10)||(b<50);
       System.out.println(!vae1);//!如果是真则为假,如果是假则为真
       System.out.println(!vae2);//!如果是真则为假,如果是假则为真
?
  }
}
?

位运算

public class Dome1 {
   //逻辑运算符:&& || !
   public static void main(String[] args) {
       /*
       A = 0011 1100
       B = 0000 1101
?
       A&B = 0000 1100 如果两个对应位都为1则是1,否则都为0;
       A|B = 0011 1101 如果两个对应位都为0则是0,否则都为1;
       A^B = 0011 0001 如果两个对应位相同则是0,否则都为1;
        ~A = 1100 0011 只看一个位置,位置取决于赋值,0都变为1,1都变为0;
        ~B = 1111 0010 只看一个位置,位置取决于赋值,0都变为1,1都变为0;
        */
//----------------------------------------------------------------------------------
       //怎样最快算出(2 * 8 = 16) = (2 * 2 * 2 * 2)
       int a = 2;
       int b = 3;
       System.out.println(a<<b);
       //反之
       int c = 64;
       int d = 8;
       System.out.println(c>>d);
  }
}