zoukankan      html  css  js  c++  java
  • Java学习之位运算和逻辑运算符

    今天看了一下HashMap类的源码,在HashMap的源码中定义了初始空间的大小

    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;

    当我看到了 1<<4 我就不知道是什么意思了,于是百度了一下,下面讲解一下原理:

    1.表示方法:  

    在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。  

    (1)正数的最高位为0,其余各位代表数值本身(二进制数)。  

    (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。 

    2、位运算符:位运算符有 >> << >>>

    就用刚刚问题来做一个例子:1的二进制编码是 0000 0001,<<运算符的意思是将运算对象左移4位,那么进行1<<4操作以后,二进制编码就

    编程了0001 0000,对应的十进制是16.

    关于逻辑运算符的使用,比较特殊的是^(按位异或操作符),运算规则: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0 

    通过该位运算可以实现值得交换

         int a=10;
            int b=5;
            
            a=a^b;
            b=b^a;
            a=a^b;
            System.out.println(a);
            System.out.println(b);

    运算结果是a=5;b=10;

    原理解释: 运算操作       a的二进制        b的二进制

          初始化        1010              0101

          a=a^b       1111              0101

          b=b^a       1111              1010

          a=a^b       0101              1010

    通过计算以后a和b的值互换。

  • 相关阅读:
    申请Google Adsense通过终审的关键点
    Google Adsense(谷歌网站联盟)广告申请指南
    年轻人请不要轻易在公司离职!(转)
    自己定义开发线程池
    js 闭包,作用域,this 终结篇(转)
    javaweb 发布目录
    linux中SCP的用法
    win10系统win10搜索框不能用 解决方案
    【经验总结】linux 安装python (替换系统自带的python版本)
    大数据Hadoop生态体系,环境搭建到集群管理
  • 原文地址:https://www.cnblogs.com/googlemeoften/p/4962564.html
Copyright © 2011-2022 走看看