美文网首页
2018-06-20 逻辑运算符

2018-06-20 逻辑运算符

作者: MiaLing007 | 来源:发表于2018-06-20 19:59 被阅读0次

逻辑运算符

Boolean类型运算时如下:
-----------------------------------------------------------------------
|     运算符     |      运算       |           范例            |      结果     | 

|        &       |      AND(与)    |         false & true     |     false    |
|        |       |      OR(或)     |         false | true     |     true     |
|        ^       |     XOR(异或)   |         false ^ true     |     true     |
|        !       |      NOT(非)    |            !false        |     true     |

|        &&      |      AND(短路)  |         false && true    |     false    | (&&前边的为false,则不会做第二个判断)
|        ||      |      OR(短路)   |         true || false    |     true     | (||前边的为true,则不会做第二个判断)

数值类型运算, 位运算符:

位运算时,是以二进制位来计算

-----------------------------------------------------------------------(可以把1看作true, 0看作false)
|     运算符     |      运算       |           范例            |      结果                  | 

|        &       |      位与       |         0110 & 1100      |     0100(全为1时则为1)    |
|        |       |      位或       |         0110 | 1100      |     1110 (有1时则为1)      |
|        ^       |     位异或      |       0110 ^ 1100        |     1010(相同则0,不同则1)  |
|        ~       |     按位取反    |           ~0110          |     1001(按位取反)          |

~是按位取反,因为计算机中操作时补码,所以计算如下:
比如计算 ~3
3为正数所以,计算机中原码,反码,补码相同。
3的补码为
00000000 00000000 00000000 00000011
去反~
补码:11111111 11111111 11111111 11111100
反码:11111111 11111111 11111111 11111100(反码为补码减1)
原码:10000000 00000000 00000000 00000100(-4)
所以结果: ~3 = 4


^ 的特点:一个数对另一个数位异或两次,则该数不变

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        // 某一个数据对另一个数据异或两次, 该数本身不变
        System.out.println(a ^ b ^ b);
        System.out.println(a ^ b ^ a);
    }

结果:

10
20

我们可以使用^位异或做简单 加密 功能,比如传递数据a时,a对b做位异或(a ^ b),然后将结果传给接收方, 接收方再将结果对b进行位异或得到解密后a的值(a ^ b ^ b)。

位异或还可以用于两个数值交换。例如下:方式2

/**
     * 实现两个数值交换
     * @param args
     */
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        // 方式1:使用第三个变量方式(开发中常用)
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a="+a+", b="+b);
        
        // 方式2:使用位异或
        a = a ^ b;
        b = a ^ b;  // b = a ^ b ^ b 相当于 b = a;
        a = a ^ b;  // b此时已为a了,a此时为a ^ b, 则相当于 a = a ^ b ^ a 则 a = b;
        System.out.println("a="+a+", b="+b);
        
        // 方式3:使用变量相加的做法
        a = a + b;
        b = a - b;  // 相当于 b = (a + b) - b, 则 b = a
        a = a - b;  // 相当于 a = (a + b) - a, 则a = b
        System.out.println("a="+a+", b="+b);

        // 方式4:一行代码搞定
        b = (a + b) - (a = b);
        System.out.println("a="+a+", b="+b);
    }

相关文章

  • 1.4.运算符

    按功能分为: 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 其他运算符 ---------- 逻辑运算...

  • JavaScript逻辑运算符与赋值运算符

    逻辑运算符 JavaScript中有三个逻辑运算符,&&与、||或、!非。 JavaScript 中的逻辑运算符可...

  • 1.3 Python 运算符

    1.3.1 算数运算符 1.3.2 关系运算符 1.3.3 赋值运算符 1.3.4 逻辑运算符 注: 逻辑运算优先...

  • day05赋值运算符.三元运算符.三元运算符在分页业务逻辑中使用

    赋值运算符 比较运算符 三元运算符 三元运算符在分页业务逻辑中使用 逻辑运算符

  • 逻辑运算符

    赋值运算符 比较运算符 先运算再比较 逻辑运算符 比较大于逻辑!,&&,|| 单目运算符(!++ -- & ) 大...

  • 2018-06-20 逻辑运算符

    逻辑运算符 Boolean类型运算时如下: 数值类型运算, 位运算符: 位运算时,是以二进制位来计算 ~是按位取反...

  • 03-基本运算

    运算符可以分为:算术运算符、比较运算符和逻辑运算符。 优先级是:算术运算符>比较运算符>逻辑运算符。 不过呢,开始...

  • 03-基本运算

    运算符可以分为:算术运算符、比较运算符和逻辑运算符。优先级是:算术运算符>比较运算符>逻辑运算符。不过呢,开始没背...

  • 【Python】运算符

    基本运算符 比较运算符 逻辑运算符

  • 运算符

    算术运算符 + - * / % ++ -- 比较运算符 ><<=>= == 逻辑运算符 & &&| ||^! &...

网友评论

      本文标题:2018-06-20 逻辑运算符

      本文链接:https://www.haomeiwen.com/subject/gauxyftx.html