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();
}
}