zoukankan      html  css  js  c++  java
  • 逻辑与,逻辑或,逻辑异或;按位与,按位或,按位异或

    符号表达:

    逻辑与  逻辑或  逻辑异或
    
    按位与  按位或  按位异或  按位非
    
      &     |       ^       ~

    说明:很多人不容易理解这些符号的说明,就很迷糊,这里我用简单的语言进行说明,看完相信你会有所收获!

        逻辑:带有这两个字的通常就是两个boolean表达式的运算。比如:(3>5) & (1<2)

        按位:带有这两个字的通常是十进制数或者二进制数的运算。比如:3 | 5

    解释说明:

      这是我自己总结的,相信在日常的编码中你能够更深的理解这些代码的意思:

    逻辑与:两边的表达式有一项为假,结果就为假。两边的表达式全为真,结果才为真。
    逻辑或:  两边的表达式有一项为真,结果就为真。两边的表达式全为假,结果才为假。
    逻辑异或:真假为真,真真为假,假假为假。
    ==============================================
    按位与:两个二进制对应位都为1时,结果为1,否则结果为都0
    按位或:两个二进制对应位都为0时,结果为0,否则结果为都1
    按位异或:两个二进制对应位相同时,结果为0,否则结果为1
    按位非:原码位为0,运算后得1,原码位为1,运算后得0

    代码演示:

    一个数转二进制的方法,这里就不再进行阐述。可以自行查阅文档进行学习。

    我们先看逻辑操作这边的代码:

            int a = 5;//0000 0101
            int b = 3;//0000 0011
            System.out.println("逻辑与:" + ((a > b) & (b > 3)));
            System.out.println("逻辑或:" + ((b > 3) | (a > b)));
            System.out.println("逻辑异或:" + ((a > 3) ^ (b > 5)));
            System.out.println("逻辑异或:" + ((a > 3) ^ (b < 5)));
            System.out.println("逻辑异或:" + ((a < 3) ^ (b > 5)));
    -----------------------------------------------------------------------    
    结果为:
    逻辑与:false
    逻辑或:true
    逻辑异或:true
    逻辑异或:false
    逻辑异或:false
    

    按位这边的代码:

            int a = 5;//0000 0101
            int b = 3;//0000 0011
            System.out.println("按位与:" + (3 & 5));//0000 0001
            System.out.println("按位或:" + (3 | 5));//0000 0111
            System.out.println("按位异或:" + (3 ^ 5));//0000 110    
    =========================================
    结果为:自行验算上边的二进制转为十进制的数
    按位与:1
    按位或:7
    按位异或:6
    

    拓展1:&= , |= , ^=

    在有些地方我们有可能会见到这样的符号:&= , |= , ^=

    这样的符号其实就是一个赋值类的操作。

    我们来举个例子:

            int a = 5;//0000 0101
            int b = 3;//0000 0011
            a ^= b;
            System.out.println(a);//a = a^b
    

      其实这个跟我们学过的+=是一个意思。

    扩展2:java中用方法进行进制转换

            //十进制转成十六进制:
            System.out.println(Integer.toHexString(10));
            //十进制转成八进制
            System.out.println(Integer.toOctalString(10));
            //十进制转成二进制
            System.out.println(Integer.toBinaryString(10));
            //十六进制转成十进制
            System.out.println(Integer.valueOf("FFFF", 16).toString());
            //八进制转成十进制
            System.out.println(Integer.valueOf("010", 8).toString());
            //二进制转十进制
            System.out.println(Integer.valueOf("0101", 2).toString());
            //将2、8、16进制直接转为10进制
            System.out.println(Integer.parseInt("1010",2));
            System.out.println(Integer.parseInt("012",8));
            System.out.println(Integer.parseInt("FFFF",16));    
  • 相关阅读:
    Windows环境安装tesseract-ocr 4.00并配置环境变量
    iis6手工创建网站后无法运行php脚本
    spring boot集成websocket实现聊天功能和监控功能
    spring boot2.0.4集成druid,用jmeter并发测试工具调用接口,druid查看监控的结果
    springboot2.1.5集成单节点elasticsearch6.4.0
    spring boot集成netty-服务端和客户端demo
    spring boot集成mongo统计活跃用户数
    spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例
    spring cloud分布式配置中心案例
    spring cloud--zuul网关和zuul请求过滤
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/13875465.html
Copyright © 2011-2022 走看看