BigInteger初识

在java的整数类型里面,byte为8位,short为16位,int为32位,long为64位。
正因为这些数值的二进制位数已经固定,所以它们能表示的数值大小就有一定的范围限制。
如果想表示比这些数值更大的数,怎么办呢?可以使用BigInteger来帮忙.
BigInteger用多少位二进制表示呢?其实,在BigInteger里面使用int数组来存储实现的.

为什么java里面要出现BigInteger类型呢?相信很多人有这个疑问,其实原因很简单,它可以表达更大范围的数值,远远比long表示的最大值还要大的多数。

在整数类型里面,long可以表达最大值,如下所示:


public class Test
{public static void main(String[] args){System.out.println(Long.MAX_VALUE);}
}

结果为:9223372036854775807
而使用BigInteger,则可以表示更大的值,如下面的例子:

public class Test
{public static void main(String[] args){BigInteger a= BigInteger.valueOf(9223372036854775807L);BigInteger b= BigInteger.valueOf(9223372036854775807L);BigInteger c=a.add(b);System.out.println(c.toString());}
}

结果为:18446744073709551614
下面说一下BigInteger的常用函数,这些函数在编程的时候会用到的。
因为BigInteger没有重载”+”,”-“,”*”,“/”, “%”这五个运算操作符,是不能直接进行数据运算的,
需要调用它的相应方法:add,subtract,multiply,divide,remainder

BigInteger构造函数分析

BigInteger构造函数如下:

给构造函数传入不同的参数都会转变为BigInteger类型.具体使用可查看相应api.

BigInteger常用函数分析

先来看看BigInteger的所有函数:



  • 比较函数:

int compareTo(BigInteger val)//比较大小
BigInteger min(BigInteger val)//返回较小的
BigInteger max(BigInteger val)//返回较大的

BigInteger经常遇到的问题

本文给大家说一下BigInteger的常见问题,总共有几个常见的问题,如下所示。

问题一:在java怎样将BigInteger类型的数据转成int类型的?

答案:BigInteger的intValue()可以获得int类型数值。

/*** Converts this BigInteger to an {@code int}.  This* conversion is analogous to a* <i>narrowing primitive conversion</i> from {@code long} to* {@code int} as defined in section 5.1.3 of* <cite>The Java&trade; Language Specification</cite>:* if this BigInteger is too big to fit in an* {@code int}, only the low-order 32 bits are returned.* Note that this conversion can lose information about the* overall magnitude of the BigInteger value as well as return a* result with the opposite sign.** @return this BigInteger converted to an {@code int}.* @see #intValueExact()*/public int intValue() {int result = 0;result = getInt(0);return result;}

问题二:在哪里可以查看BigInteger的代码实现?

答案:在jdk里面的java.math包下面就可以看到

问题三:在JAVA中BigInteger.ZERO是什么意思?

答案:在BigInteger内部定义的 一个代表 数字零 的常量,如下所示:

public static final BigInteger ZERO = new BigInteger(new int[0], 0);

问题四:在java中 有没有比BigInteger范围更大的?遇到比BigInteger范围更大的情况是不是只能用数组解决了?

答案:在java中没有比BigInteger范围更大数了。
BigInteger类可以处理包含任意长度数字序列的数值,因为在BigInteger内部是通过int 数组来表示和处理大数据的,
int类型的最大值是2147483647,所以int数组最多有21亿个int值,这些数值足够大的,已经满足了超大数据的使用。

问题五:java.math.BigInteger有位数限制么?比如long是2的64次方。

答案:从BigInteger的源码可以看出来,在BigInteger内部数值是通过:int[] mag存放数据的,
总共可以存放2147483647个int数据,而每个int数据由4个字节表示,所以BigInteger理论上可以存放的数据最大为2 的2147483647*4*8-1-1次方

BigInteger精讲相关推荐

  1. java核心技术精讲-李兴华-专题视频课程

    java核心技术精讲-101993人已学习 课程介绍         本课程主要读者全面细致的讲解Java编程的所有核心知识,从基础语法.到面向对象以及Java的实际应用进行完整讲解.官方QQ群:61 ...

  2. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

  3. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

  4. 【牛客每日一题】tokitsukaze and Soldier 题目精讲 贪心、优先队列、堆

    链接:https://ac.nowcoder.com/acm/problem/50439 来源:牛客网 ACM在线模板 今天才发现牛客推出了一个每日一题的版块,3月25号就开始了,今天才发现,赶紧补救 ...

  5. PyTorch深度学习入门与实战(案例视频精讲)

    作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)

  6. 水稻微生物组时间序列分析精讲1-模式图与主坐标轴分析

    写在前面 上周五我们分享了3月底发表的的 <水稻微生物组时间序列分析>的文章,大家对其中图绘制过程比较感兴趣.一上午收到了超30条留言,累计收到41个小伙伴的留言求精讲. 我们也争取花时间 ...

  7. python flask高级编程之restful_('Python Flask高级编程之RESTFul API前后端分离精讲',),全套视频教程学习资料通过百度云网盘下载...

    资源详情 r n t某课网好评度100%的Python Flask高级编程之RESTFul API前后端分离精讲 r n t t t第1章 随便聊聊 r n t t t聊聊Flask与Django,聊 ...

  8. python相关函数_python常用函数精讲

    原标题:python常用函数精讲 返回值为bool类型的函数 bool是Boolean的缩写,只有真(True)和假(False)两种取值 bool函数只有一个参数,并根据这个参数的值返回真或者假. ...

  9. 精讲深度学习RNN三大核心点,三分钟掌握循环神经网络

    本文将剖析循环神经网络(RNN)的工作原理,精讲循环神经网络的特点和实现方式.野蛮智能,小白也能看懂的人工智能. 循环神经网络从何而来? 我在我的这篇文章介绍了卷积神经网络(CNN)卷积神经网络(CN ...

最新文章

  1. robotframework - 运行报错提示 No keyword with name 'Open Browser' found.
  2. UCSC hg19.ensembl.gtf
  3. 机器学习-终结者是否会出现
  4. centos/linux扩容Swap分区
  5. 谷歌又买算法送手机了,最新方法让背景虚化细节到头发丝,真有单反的感觉了...
  6. 在 python中每个模块用什么来实现_Python代码模块热更新机制实现(reload)
  7. QuickSort简解(分治思想) By ACReaper
  8. php环境苹果搭建,mac下搭建php环境
  9. SDUT-保留整数 -
  10. 基于词典和朴素贝叶斯中文情感倾向分析算法
  11. Hibernate之一对一映射
  12. 无盘服务器文件管理,云图管家文档图纸管理软件
  13. XSS、CSRF攻击以及预防手段
  14. php 抢红包_用PHP实现的抢红包小程序
  15. 17. 06-图3 六度空间 数据结构 浙江大学 拼题
  16. 人机交互-6-评估之用户测试
  17. 乌镇互联网大会——中国最成功的商人花一辈子才悟到的道理(转自知乎)
  18. [小黄书管理平台]登录页面和模型驱动表单
  19. 企业实战(17)记录一次使用DDNS动态域名解析服务外网通过域名访问内网服务器服务的过程
  20. 解析中小型数据安全和管理安全应对之策

热门文章

  1. 中国科学院大学(国科大)预推免系统内容无法粘贴解决方案
  2. VSCode正则表达式替换
  3. 优酷视频转码MP4格式
  4. MySQL8.0 MGR介绍
  5. 刚装了一个系统,消除windows10系统讨厌的“咚咚咚”声音
  6. Spring的注解说明
  7. 计算机网络中的网桥,一个动画看懂网络原理之网桥的工作原理
  8. PHP网站警报,多种PHP程序过滤漏洞(转)
  9. RocketMQ源码解析:同步刷盘和异步刷盘的实现
  10. STM32MP157 | 虚拟网卡设备驱动