• Java学习日记基础篇(八) —— 二进制、位运算、位移运算


    二进制

    二进制是逢2进位的进位置,0,1是基本算符

    原码反码补码

      在基本数据类型那里,有详细解释

    1.  二进制的最高位数是符号位:0表示整数,1表示负数
    2. 正数的原码,反码,补码都一样
    3. 负数的反码 = 它的原码符号位不变,其它位取反
    4. 负数的补码 = 它的反码 + 1
    5. 0的反码,补码都是0
    6. java中的数都是有符号的
    7. 在计算机运算的时候,都是以补码的方式来运算的

    位运算符

      java中有4个位运算,分别是“按位与&,按位或|,按位异或^,按位取反~”,他们的运算规则是:

        按位与& —— 两位全为1,结果为1

        按位或|  ——  两位有一个为1,结果为1

        按位异或 ^ —— 两位一个为0,一个为1,结果为1

        按位取反~ —— 0变1,1变0

    注意:计算的时候用补码做才是正确的,用源码算是错的

    public class pra2 {
        public static void main(String[] args) {
            //算的时候用补码算,才是正确的结果
            System.out.println("~2=" + (~2));
            System.out.println("2&3=" + (2&3));
            System.out.println("2|3=" + (2|3));
            System.out.println("~-5=" + (~-5));
            System.out.println("-3^3="+(-3^3));
        }
    }
    
    ~2=-3
    2&3=2
    2|3=3
    ~-5=4
    -3^3=-2
    几个例子

    移位运算

      java中有3个移位运算符:<<,>>算术右移和算数左移,以及>>>逻辑右移,运算规则:

        >>  算术右移:低位溢出,符号位不变,并用符号位补溢出的高位

        <<  算术左移:符号位不变,低位补0,就相当于*2

        >>>逻辑右移:低位溢出,高位补0

    public class pra2 {
        public static void main(String[] args) {
            //算的时候用补码算,才是正确的结果
            //1向右移两位
            System.out.println("1>>2="+(1>>2));
            System.out.println("-1>>2="+(-1>>2));
            
            System.out.println("1<<1="+(1<<1));//移动移位*2
            System.out.println("1<<2="+(1<<2));//移动两位*4
            System.out.println("2<<2="+(2<<2));//移动两位*4        
            System.out.println("-1<<2="+(-1<<2));
            
            System.out.println("3>>>1="+(3>>>1));
            System.out.println("3>>>2="+(3>>>2));
        }
    }
    
    
    结果:
    1>>2=0
    -1>>2=-1
    1<<1=2
    1<<2=4
    2<<2=8
    -1<<2=-4
    3>>>1=1
    3>>>2=0
    几个例子
  • 相关阅读:
    【NOIP 模拟赛】钟 模拟+链表
    【NOIP 模拟赛】Evensgn 剪树枝 树形dp
    【NOIP模拟赛】公主的朋友 区间染色问题
    【BZOJ 3669】 [Noi2014]魔法森林 LCT维护动态最小生成树
    【BZOJ3674】可持久化并查集加强版
    【NOIP模拟赛】 permutation 数学(打表)
    【NOIP模拟赛】beautiful 乱搞(平衡树)+ST
    【NOIP模拟赛】与非 乱搞
    【NOIP模拟赛】Evensgn 的债务 乱搞
    [NOIP2009]靶形数独 深搜+枝杈优化
  • 原文地址:https://www.cnblogs.com/houzhaohui/p/9752868.html
Copyright © 2020-2023  润新知