逻辑运算符 与 或 非 异或

与:&

两个操作数都为1,结果才为1,否则结果为0

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(5));//101
        System.out.println(Integer.toBinaryString(4));//100
        System.out.println(Integer.toBinaryString((5 & 4))); //100
        System.out.println(5 & 4); //4
    }

或:|

两个操作数只有一个为1,那么结果就是1,否则为0

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(5));//101
        System.out.println(Integer.toBinaryString(4));//100
        System.out.println(Integer.toBinaryString((5 | 4))); //101
        System.out.println(5 | 4); //5
    }

异或:^

相同则结果为0,不同则结果为1

特性

  • 任何数于0异或为任何数;
  • 相同的数异或为0。
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(5));//101
        System.out.println(Integer.toBinaryString(4));//100
        System.out.println(Integer.toBinaryString((5 ^ 4))); //1
        System.out.println(5 ^ 4); //1
    }

应用:出现一次的数字

非:~

如果位为0,结果是1,如果位为1,结果是0
特点:

  • ~为单目运算符
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(5));//101
        //int类型占4Byte(位),共32个Bit(字节)
        System.out.println(Integer.toBinaryString(( ~ 5))); //1111 1111 1111 1111 1111 1111 1111 1010
    }

版权声明:本文为ycd500756原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。