逻辑运算符、位运算符()-其他
逻辑运算符、位运算符()
package github.demo01;
/**
- @author subeiLY
- @create 2021-05-25 20:10
*/
public class Demo05 {
// 逻辑运算符
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);
}
}
package github.demo01;
/**
* @author subeiLY
* @create 2021-05-26 9:11
*/
public class Demo06 {
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 // 按位异或, 只有当两个二进制位不相同时,结果才为1;否则结果为0。
~B = 1111 0010 // 按位取反, 把每个二进制位上的0变成1,把每个二进制位上的1变成0。
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 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(5<<3); //把十进制数乘以2的指定次方,得到左移运算的结果。例如:5 << 3 = 40,因为5乘以2的3方等于40.
}
}
————————
package github.demo01;
/**
- @author subeiLY
- @create 2021-05-25 20:10
*/
public class Demo05 {
// 逻辑运算符
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);
}
}
package github.demo01;
/**
* @author subeiLY
* @create 2021-05-26 9:11
*/
public class Demo06 {
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 // 按位异或, 只有当两个二进制位不相同时,结果才为1;否则结果为0。
~B = 1111 0010 // 按位取反, 把每个二进制位上的0变成1,把每个二进制位上的1变成0。
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 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(5<<3); //把十进制数乘以2的指定次方,得到左移运算的结果。例如:5 << 3 = 40,因为5乘以2的3方等于40.
}
}