位运算符与逻辑运算符的区别

    xiaoxiao2023-11-17  144

    一、位运算符:~、&、|、^

    位运算是将数据先转化为二进制数补码形式,再逐bit)按规则计算。

    ~是按位非,把0变成1,把1变成0

    &是按位与,全1则1,否则是0

    |是按位或,全0则0,否则是1

    ^是按位异或,相同为0,不同为1

    如:a=3,b=5,则:

    a       0000  0000  0000  0011

    b       0000  0000  0000  0101

    ~a     1111  1111  1111  1100

    a&b   0000  0000  0000  0001

    a|b    0000  0000  0000  0111

    a^b   0000  0000  0000  0110

    二、逻辑运算符:&&、||、!

    逻辑运算符只能针对boolean类型进行逻辑运算,运算结果仍为boolean类型

    &&:全为true才为true,否则为false

    ||:全为false才false,否则为true

    !:把false 变为true,把true变为false

    三、位运算符与逻辑运算符的区别:

    逻辑运算符只能针对boolean类型进行逻辑运算,而位运算可以对数值进行逻辑运算。

    逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。

    以此代码为例:

    public class ShuJu{ public static void main(String[]args){ int w=10,x=9; if((w=0)==0||(x=0)==0){ System.out.println(x); } int ww=10,xx=9 if((ww=0)==0)|((xx=0)==0){ System.out.println(xx); } } }

    输出结果x=10,因为右边被短路了,xx=0,因为位运算不存在短路。

    最新回复(0)