大整数类型和一般的整数类型相比各有什么优劣?
一、大整数类型和一般的整数类型相比
大整数类型和一般的整数类型相比优点是不会溢出,能表示任意长度的数字做各种精度的运算。
缺点是没有直接的类型运算支持,必须像人类计算一样按位数分别计算进行借位/进位操作。。好在现在常用语言比如Java已经内置大数库,不用重复造轮子了。硬件:不直接支持运算,效率低下。现在的主流计算机通常都是以寄存器为单位进行运算,在这种架构上实现大数运算一般都要从内存读取后操作,如果存在大量随机读写大数的情况,性能甚至可能下降几十到上百倍。
普通整数:优缺点刚好和大整数反过来,简单快,但是会存在溢出和精度丢失问题。
为什么不做自动类型提升?因为很难做啊。首先要知道溢出是一个运行时才能完全确定的问题,那么:对于类型确定的语言根本做不到,因为类型在编译期间已经确定,除非重新设计一个功能更强大的编译器。对于无类型的语言,也许可以通过把所有数都存在内存并且设置长度与类型标志位的方法来达到类似的效果,但是这样程序效率一定会大大降低,并且解释器会变得更复杂,同时会引入一套新的数据解析规则,很多库也许都需要重写。
既然要做无限制的提升,那么数据就不能放在寄存器中,同时还必须设计一套能够在自动提升/降低时能够自动申请/释放内存的方案,同时还必须兼顾性能……
综上所述,具备设计开发强于GCC/LLVM等静态编译器,开发高效解释语言库,能完美解决Java的GC问题的人,才能解决这个问题。
延伸阅读:
二、大整数BigInteger
import java.math.BigInteger;
首先,对于初始化则不像基本类型包装这块讲着3种方式,这里只剩下valueOf() 可以对其初始化。
接着,大整数变量不能使用算术运算符,需要通过以下方法进行运算:
add():取代了加法运算符“+”;
subtract():取代了减法运算符“-”;
multiply():取代了乘法运算符“*”;
divide():取代了除法运算符“/”;
remainder():取代了取余运算符“%”;
negate():取代了负号运算符“-”。

猜你喜欢LIKE
相关推荐HOT
更多>>
分析型数据库是什么,和关系型数据库有什么区别?
一、分析型数据库分析型是从数据库的作用来划分的,其重点用来做数据分析(OLAP),大量都是select语句。还有一种是专门用来做事务处理的,一般...详情>>
2023-10-17 23:26:16
python self是什么意思,怎么使用?
一、python self介绍首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调...详情>>
2023-10-17 21:24:11
创建Project提交到Github需要做什么?
一、创建Project提交到Github需要做什么1、在Github新建一个repository。2、打开编译器,编辑最外面的.gitignore,如果没有就新建一个这样的文件...详情>>
2023-10-17 20:23:50
C/S和B/S架构的工作原理及优缺点?
一、C/S架构的工作原理C/S 架构中客户端和服务器之间通过网络连接进行通信,客户端发送请求后会等待服务器返回响应,直到收到响应后才能显示给...详情>>
2023-10-17 19:43:01热门推荐
Web前端开发是什么技术?
沸分析型数据库是什么,和关系型数据库有什么区别?
热对数量庞大的照片进行分类管理,较好的方便检索的方法是什么?
热web前端会用到哪些软件工具?
新Flash动画制作的原理是什么?
java/Python这么火,c++这么难,为什么我们还要选择用C++?
app开发的制作为什么报价和开发周期都不一样?
python self是什么意思,怎么使用?
什么是SEO?
PHP中的interface有什么用处?
创建Project提交到Github需要做什么?
为什么SwiftUI用struct来表示view?
C/S和B/S架构的工作原理及优缺点?
Flash为什么被淘汰了?
技术干货






