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