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

最新文章

  1. linux中的通配符与正则表达式
  2. 使用xib文件创建集合类单元格
  3. java.io.file
  4. HTML 学习笔记 CSS3 (边框)
  5. 网页中三角切边还半透明,现在的设计师越来越牛,css也要跟上啊
  6. 【动态规划】流水作业调度问题与Johnson法则
  7. POJ 1808 Quadratic Residues(平方剩余相关)
  8. mac下开发环境常用操作与命令
  9. Eclipse导入Gradle时报错:SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable
  10. iOS学习之自定义UItableViewCell
  11. 用lambda表达式声明委托
  12. I/O多路复用之epoll实战
  13. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP
  14. Android 自定义支持快速搜索筛选的选择控件(一)
  15. 洛谷p1067
  16. 浅谈压缩感知(六):TVAL3
  17. Redis Scan迭代器遍历操作原理(二)
  18. 性能指标术语&理发店模型
  19. 南阳ACM 题目275:队花的烦恼一 Java版
  20. MYSQL5.7修改密码

热门文章

  1. Word 设置段前分页
  2. AI绘画--tag资源
  3. Kubernetes 网络模型基础指南
  4. vue开发中,数据更新,但视图不刷新
  5. SAP GGB1替换 发现没有替换的字段 解决
  6. WSL2安装nvm并配置npm镜像源
  7. SQL group by date (hour),数据库按小时分组统计数据量
  8. 04_Linux完全卸载安装Mysql
  9. wpa_supplicant 交叉编译
  10. Unity 使用IO流获取PNG/JPG/GIF/BMP的宽高【转】