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

    xiaoxiao2023-10-26  167

    位运算是将数据先转换为补码形式,再逐位(bit)按规则运算

    位运算包括“按位与”(运算符“&”)“按位或”(运算符“|”)“按位非”(运算符“~”)“按位异或”(运算符“^”)

    “按位与” 运算符“&” --全1为1,否则为0

    a  000000110

    b &000111111

    c  000000110

    “按位或” 运算符“ |” -- 规则“全为0则0,否则为1”

    a 0000 1011

    b “|” 0000 1100

    c 00001111

    “按位非” 运算符“~”--规则“遇0则1,遇1则0”

    a 0000 1101

    b“|” 1111 0010

    “按位异或”运算符“^” --运算规则“相同为0,否则为1”

    a 0000 1101

    b^ 0000 0101

    c 0000 1000

    注意:按位异或(^)可逆

    a^b^b=a;

    逻辑运算符:

    运算符用法含义&&op1&&op2逻辑与||op1||op2

    逻辑或

     

    !!op逻辑非

    逻辑运算符规则:

    逻辑与   op1&&op2 全真则真,否者为假

    逻辑或  op1||op2 全假为假,否则为真

    逻辑非 !op  变真为假,变假为真

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

    1、逻辑运算符只能针对Boolean进行逻辑运算,而位运算还可以对数值进行逻辑运算

    2、逻辑运算符有短路情况,位运算不会

          比如:

    if((a=20)==20)||(b=20)==20) System.out.println("b=",b); if((a=20)==0|(b=20)==0) System.out.println("b=",b)

     

     

    上边的代码中,由于(a=20)==20为真,逻辑或运算停止,b为0

    而下面的代码中,由于是按位或,所以首先计算两边的值,即true|true,结果为1,b为20

    y

     

     

     

    以上就是逻辑运算符与位运算符的差异

    最新回复(0)