从底层重学 Java 之 BigInteger 大整数 Gitchat连接
Gitchat连接
https://gitbook.cn/gitchat/activity/5f395a80aced402379f6a0ca
简介
从底层,从原理,我们来重学一次 Java。BigInteger 是大整数计算类,是BigDecimal用于存储大数属性的类型,BigDecimal中很多计算就是基于BigInteger的函数进行计算的,采用了多种优化的算法实现,他的源码及实现是怎样的呢?
本系列秉承所有结论尽量从源码中来,没有源码的尽量标明出处。相关源码会附着在文章中,读本文即可,不用再自行查找源码及资料学习,方便大家充分利用路上的碎片时间。
本篇 Chat 对BigInteger的属性、构造函数、四则运算、位移等进行逐一源码分析,帮助大家深入理解和学习 JDK 源码的牛掰优化。
本文包含以下内容:
- 类信息
- 类的定义
- 类的继承结构
- 静态代码块
- 静态代码块1及相关的常量
- MAX_CONSTANT
- posConst
- negConst
- 静态代码块2及相关的常量
- zeros
- 静态代码块1及相关的常量
- 常量
- 属性
- signum
- mag
- 构造函数
- BigInteger(int[] magnitude, int signum)
- BigInteger.ZERO
- 三个静态数组
- bitsPerDigit
- digitsPerInt
- intRadix
- BigInteger(String val)
- private BigInteger(long val)
- 四则运算
- 加
- add(BigInteger val)
- int compareMagnitude(BigInteger val)
- int[] add(int[] x, int[] y)
- int[] subtract(int[] big, int[] little)
- 减
- 乘
- BigInteger multiply(BigInteger val)
- BigInteger multiply(BigInteger val, boolean isRecursion)
- BigInteger multiplyByInt(int[] x, int y, int sign)
- int[] multiplyToLen(int[] x, int xlen, int[] y, int ylen, int[] z)
- Karatsuba算法
- 实现原理
- BigInteger multiplyKaratsuba(BigInteger x, BigInteger y)
- BigInteger getLower(int n)
- BigInteger getUpper(int n)
- BigInteger abs()
- Integer.numberOfLeadingZeros()
- Toom-Cook 3路算法
- BigInteger multiplyToomCook3(BigInteger a, BigInteger b)
- BigInteger getToomSlice(int lowerSize, int upperSize, int slice,int fullsize)
- exactDivideBy3
- 平方计算
- implSquareToLen
- squareKaratsuba
- squareToomCook3
- 除
- BigInteger divide(BigInteger val)
- Knuth算法
- MutableBigInteger
- MutableBigInteger.divideKnuth
- divideOneWord
- divideMagnitude
- Integer.numberOfTrailingZeros
- copyAndShift
- Burnikel-Ziegler算法
- 算法文章
- 第一步计算
- divide2n1n
- divide3n2n
- divideAndRemainderBurnikelZiegler主算法
- Arrays.fill
- 加
- 位运算
- 左移
- 右移
- valueOf
- 其他计算及比较
- BigInteger abs()
适用人群:有一些 Java 基础的人群。
从底层重学 Java 之 BigInteger 大整数 Gitchat连接相关推荐
- 从底层重学 Java 之 Character 字符型 Gitchat连接
Gitchat连接 https://gitbook.cn/gitchat/activity/5f50804bbe67a5348a9b2c91 简介 从底层,从原理,我们来重学一次 Java.Chara ...
- 从底层重学 Java 之两大浮点类型 GitChat链接
chat连接 https://gitbook.cn/gitchat/activity/5f03fdd3852a4f3686fb3366 简介 从底层,从原理,我们来重学一次 Java.两大 Java ...
- 从底层重学 Java 之两大浮点类型 GitChat连接
从底层,从原理,我们来重学一次 Java.两大 Java 浮点类 Double.Float 是我们比较常用的对象,他们的源码及实现是怎样的呢? 本系列秉承所有结论尽量从源码中来,没有源码的尽量标明出处 ...
- 从底层重学 Java 之 Stream 并行及标志 GitChat连接
GitChat连接 https://gitbook.cn/gitchat/activity/5f8fc6cd1f577d4d9f428562 简介 从底层,从原理,我们来重学一次 Java.Strea ...
- 从底层重学 Java 之 Stream 初探 Gitchat连接
Gitchat连接 https://gitbook.cn/gitchat/activity/5f85696aad812d16b498848c 简介 从底层,从原理,我们来重学一次 Java.Strea ...
- 从底层重学 Java 之四大整数 GitChat链接
从底层,从原理,我们来重学一次 Java.四大 Java 整数类 Byte.Short.Integer.Long 是我们比较常用的对象,他们的源码及实现是怎样的呢? 本系列秉承所有结论尽量从源码中来, ...
- 《重学 Java 面试题》PDF 出炉了 - 退休的程序猿,肝了30天写出15万字241页的实战编程资料
一.前言 我膨胀了 ,在编写完上一本PDF<字节码编程>被下载了2000份以后,蠢蠢欲动开始计划第二本.于是从 5月20日那天投身实战型设计模式打磨,通过模拟互联网业务开发实际需求作为学习 ...
- 《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料...
持续坚持原创输出,点击蓝字关注我吧 作者:小傅哥 博客:https://bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获!???? ❞ 目录 一.前言 二.简介 1. 谁发明了设 ...
- 重学 Java 设计模式:实战适配器模式
重学 Java 设计模式:实战适配器模式 一.前言 擦屁屁纸80%的面积都是保护手的! 工作到3年左右很大一部分程序员都想提升自己的技术栈,开始尝试去阅读一些源码,例如Spring.Mybaits.D ...
最新文章
- Pytorch:使用DCGAN实现数据复制
- 数据结构的映像方法(关系的机内表示)
- postgres中文文档
- 20w7珠led驱动电源电路图_三种常用的LED驱动电源电路图详解!
- 5分钟了解CDN 加速原理 | +新书推荐
- 求n的阶乘的算法框图_单片机常用的14个C语言算法
- excel 电阻并联计算_电路分析基础(5)-关于电阻,有些话我还是要说一说
- 飞鸽传书2012软件设计者的角度来看
- 速进!2000核实计算资源免费领取,名额有限,即开即送!
- jetpack的camerax_Android开发-Jetpack组件CameraX
- Node.js ES6 模块化的基本语法-按需导出与按需导入
- 动手学servlet(六) 过滤器和监听器
- Redis基础(二)——通用命令和配置
- stm32单片机屏幕一直闪_STM32物联网实战项目 - 项目需求
- css实现时间数字特效字体格式
- 基于python的图像识别
- 参考文献tool-mendeley_拔剑-浆糊的传说_新浪博客
- 计算机 医学 sci期刊,1分左右医学sci期刊
- SCOI 2016 bzoj 4567~4572 题解
- python学习 —— post请求方法的应用