JAVA_基础逻辑运算符与位运算符使用

逻辑运算符

  • &-----逻辑与| ----- 逻辑或! ----- 逻辑非
  • &&-----短路与|| ----- 断路或^ ----- 逻辑异或
a b a & b a && b a | b a || b !a a ^ b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false
  • 区分 &&&

    • 相同点1:&&& 的运算结果相同
    • 相同点2:当符号左边是true时,二者都会执行符号右边的运算
    • 不同点:当符号左边是false时,&继续执行符号右边的运算。而&&不再执行符号右边的
  • 区分 |||

    • 相同点1:||| 的结果相同
    • 形同点2:当符号左边是false时,二者都会执行后面的操作
    • 不同点:当符号左边时true时,|继续执行符号右边的运算,而 ||不在执行符号右边的操作

位运算符

位运算符操作的都是整型的数据。

位运算符是直接对整数的二进制进行计算。

运算符 运算 范例
<< 左移 3 << 2 = 12 ( 3 * 2 * 2 = 12 )
>> 右移 3 >> 1 = 1 ( 3 / 2 = 1 )
>>> 无符号右移 3 >>> 1 = 1 ( 3 / 2 = 1 )
& 与运算 6 & 3 = 2
| 或运算 6 | 3 = 7
^ 异或运算 6 ^ 3 = 5
~ 取反运算 ~ 6 = -7
  • 注意:没有<<<无符号左移
位运算符的细节
<< 空位补0,被移除的高位丢弃,空缺位补0。
>> 被移位的二进制最高位是0,右移后,空缺位补0;最高位如果是1,则空缺位补1。
>>> 被移位二进制最高位无论是0或者是1,空缺位都补0。
& 二进制位进行&运算,只有1 & 1时结果是1,否则是0。
| 二进制位进行|运算,只有0|0时结果是0,否则是1。
^ 相同二进制位进行^运算,结果是0;( 1 ^ 1 = 0, 0 ^ 0 = 0 )
不相同二进制位^运算结果是1。( 1 ^ 0 = 1, 0 ^ 1 = 1 )
~ 正数取反,各二进制码按补码各位取反
负数取反,各二进制码按补码各位取反

<< :在一定范围内,每项左移1位,相当于 * 2

>>: 在一定范围内,每项右移1位,相当于 / 2

public class BitTest {
    public static void main(String[] args) {
        int i = 21;
        int j = -21;
        System.out.println(" j << 2 = " + ( j << 2 ));  // -21 * 2 * 2 = -84
        System.out.println(" i << 2 = " + ( i << 2 ));  // 21 * 2 * 2 = 84
        System.out.println(" i << 3 = " + ( i << 3 ));  // 21 * 2 * 2 * 2 = 168

        System.out.println(" j >> 2 = " + ( j >> 2 ));  // -21 / 2 / 2 = -6
        System.out.println(" i >> 2 = " + ( i >> 2 ));  // 21 / 2 / 2 = 5
        System.out.println(" i >> 3 = " + ( i >> 3 ));  // 21 / 2 / 2 / 2 = 2

        int m = 12;
        int n = 5;
        System.out.println(" m & n = " + ( m & n ));    // 4
        System.out.println(" m | n = " + ( m | n ));    // 13
        System.out.println(" m ^ n = " + ( m ^ n ));    // 9
    }
}

数值之间的交换:

   //  交换两个变量的值
        int num1 = 10;
        int num2 = 20;
        System.out.println(" num1 = " + num1 + " ,num2 = " + num2);

        //  方法一:推荐以定义临时变量的方式进行交换
        //  好处:适用于多种类型
        int temp = num1;
        num1 = num2;
        num2 = temp;
        System.out.println(" num1 = " + num1 + " ,num2 = " + num2);

        // 方法二:
        // 好处:不用定义临时变量
        // 弊端:①相加操作可能超出存储范围②有局限性:只针对数值类型
        int num3 = 10;
        int num4 = 20;
        num3 = num3 + num4; // num3 = 30;
        num4 = num3 - num4; // num4 = 10;
        num3 = num3 - num4; // num3 = 20;

        System.out.println(" num3 = " + num3 + " ,num4 = " + num4);

        // 方法三:实用位运算符
        // 好处:不用定义临时变量
        // 弊端:有局限性:只针对数值类型
        int num5 = 10;
        int num6 = 20;
        num5 = num5 ^ num6;
        num6 = num5 ^ num6;
        num5 = num5 ^ num6;
        System.out.println(" num5 = " + num5 + " ,num6 = " + num6);
(0)

相关推荐

  • #PY小贴士# 别弄错了 Python 里的这几个运算符

    有人问过这样的问题: 为什么我求圆的面积,结果不对? r = 10s = 3.14 * (r ^ 2)print(s) 还有人问过这样的问题: 为什么判断两个并列条件时结果不对? a = 6if a ...

  • day05_运算符入门

    2020-11-19 21:31:42  阅读:6  来源: 互联网 运算符概述 运算符是指对操作数的运算方式.组成表达式的 Java 操作符有很多种(什么是操作数和操作符,例如 1+2,其中 1 和 ...

  • C语言基础丨运算符之位运算符(六)

    对于更多紧凑的数据,C 程序可以用独立的位或多个组合在一起的位来存储信息.文件访问许可就是一个常见的应用案例.位运算符允许对一个字节或更大的数据单位中独立的位做处理:可以清除.设定,或者倒置任何位或多 ...

  • 书法界最大的谎言:楷书是书法的基础,这位“书圣”就不懂楷书!|索靖|楷书|张芝

    书法界最大的谎言:楷书是书法的基础,这位"书圣"就不懂楷书! 2020年12月26日 15:36 新浪网 作者 卓轩阁书画 我们之前曾经解读过许多关于古代名家草书的文章,在很多朋友 ...

  • C语言丨初识位运算符,看这篇文章就够了!

    C语言中位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果.下面小编就为大家介绍下C语言位运算符的用法.   位运算符 C语言 ...

  • JAVA_基础数据类型介绍与基本数据类型之间的运算规则

    基本数据类型 整型: byte.short.int.long java 的整型常量默认为int型,在java程序中变量通常声明为int型,除非不足以表示较大的数才用long,而在声明long型常量必须 ...

  • 八字基础知识—宫位对应论(三)

    4 四柱对应方位 如果用八字看风水?以天干为后面!地支为前面!其中年.月柱为左.日柱柱 为中心部分,时柱为右.再细分?可把年干视为远处的左后方 年支视为远处的左前方?把月干视为近处处的左后方,月支视为 ...

  • RealPython 基础教程:Python 运算符和表达式

    " 运算是程序的基本功能,而运算符和表达式则是最基本的运算单元" 在了解了不同类型的变量之后,我们现在该用这些变量做点什么了. 今天,我们将了解如何在变量上执行计算.你最终将会掌握 ...

  • 说说Python中的6种位运算符?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Price Action(裸K交易系统)水平支撑阻力位基础教程

    Price Action(裸K交易系统)水平支撑阻力位基础教程

  • C语言基础丨运算符之条件运算符(七)

    条件运算符(conditional operator)有时候也称为三元运算符(ternary operator,或者trinary operator),因为它是唯一需要 3 个操作数的运算符,条件表达 ...