zoukankan      html  css  js  c++  java
  • 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
    几个例子
  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/houzhaohui/p/9752868.html
Copyright © 2011-2022 走看看