Day8逻辑运算符与位运算符

package operator;

//逻辑运算符
public class Demo5 {
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));//若结果为真,则变为假,真的则变成假的

    //短路运算:在与运算中,若是第一个变量已经被确认是false,则不会再继续执行后面的代码,直接输出false
    int c = 4;
    boolean d = (c<4)&&(c++<4);
    System.out.println(c);//输出结果为4,可知c++并未被执行,否则应该输出5
    System.out.println(d);
}

}

package operator;

public class Demo6 {
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,否则为一
a^b = 0011 0001     相同则为0,否则为1  异或
~b = 1111 00100     取反


接下里思考一个问题:2*8怎样运算最快?
将问题简化为2*2*2*2

在二进制中
0000 0000       0
0000 0001       1
0000 0010       2
0000 0100       4
0000 1000       8
0001 0000       16

<<      *2
>>      /2
效率极高
*/
    System.out.println(2<<3);//16


}

}

posted @ 2025-08-28 16:41  冰涿  阅读(10)  评论(0)    收藏  举报