zoukankan      html  css  js  c++  java
  • java位运算分析

    java位运算

      java位运算在平常的编码过程中十分场景,通常框架都替我们封装好了,我对于细节方面反而一知半解,下面就重新梳理一下。
      优秀的框架使得我们轻松,也使得我们距离真相越来越远。
    

    位运算种类

    • 左移、右移
    • 与或

    使用场景

    • 左移、右移

        左移和右移是比较简单的位运算,简单来说,就是把二进制值向左或向右移动
        对于数据来说,左移N位就是乘于2的N次方,右移同理。
      
        举例:
          数值8对于的二进制值为 1000 =(1*2*2*2 + 0*2*2 + 0*2 +0) 
          对数值8进行左移1位操作,等于在1000的基础上,左移以为,得到 10000 = (1*2*2*2*2 + 0*2*2*2 + 0*2*2 + 0*2 +0) = 16
          ∴ 左移N位就是乘于2的N次方
      
    • 与运算 &

      • 二进制值,按位相与,都为1时才为1,其他为0
          举例说明:
              1100011  &
              1001111
             =1000011
        
      • 对于2的n次方取余,相当于对2的n次方减一取与运算,n为正整数。


      • 对于2的N次方取余 == 对于2的N次方-1取与
        • 2的N次方为 10000, 2的N次方-1为 1111
      • 基于上面的结论,来看待HashMap的扩容机制
        • HashMap扩容时,size的大小为2的N次方,有两个原因
          • 扩容时,重新计算数据的位置,变化较小
          • size为2的N次方时,计算位置可以使用[hash & (n - 1)],效率更高
    • 或运算 |

      • 二进制值,按位相或。有一个为1,则为1
    用自己的努力创造我们的未来
  • 相关阅读:
    oracle linux 7.3 dtrace 安装
    ubuntn 内核升级到LINUX v4.11.8:
    ubuntu上安装systemtap
    ubuntu systemtap-sdt-dev
    ubuntu 内核调试符号 网址
    apt-get和apt-cache命令实例展示
    软件包管理 rpm yum apt-get dpkg
    让VIM支持Python2 by update-alternatives
    在Ubuntu中通过update-alternatives切换软件版本
    Ubuntu 11.04安装GCC 4.6.1
  • 原文地址:https://www.cnblogs.com/yishilin/p/15490355.html
Copyright © 2011-2022 走看看