import java.util.Scanner;
public class Demo10 {
//逻辑运算符
public static void main(String[] args) {
//与(and) 或(or) 非(取反)、
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(b&&a));//逻辑与运算:两个变量都为真,结果才为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);//输出为false
System.out.println(c);//输出为5 表示在上面(c++<4)这里 c++并没有真正运算 因为前面c为5大于4已经使得c<4是假了
System.out.println(a);
Scanner scanner = new Scanner(System.in);
/*
* A = 0011 1100
* B = 0000 1101
* --------------
* A&B = 0000 1100 有0为0 全1为1
* A|B = 0011 1101 有1为1 没1为0
* A^B = 0011 0001 相同为0 不同为1
* ~B = 1111 0010 取反运算 与B刚好相反
*
* 2*8 = 16 2*2*2*2
* << 左移 相当于*2
* >> 右移 相当于/2
*
* 例 二进制位运算
* 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);
}
}