J***A语言链表实现大整数加法,j***a语言链表实现大整数加法的方法

dfnjsfkhak 41 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言链表实现整数加法问题,于是小编就整理了2个相关介绍Java语言链表实现大整数加法的解答,让我们一起看看吧。

  1. Java开发中,如果要存一组有序的整数集合,可以怎样实现?
  2. 银行服务器是如何实现存储超大数字而不会溢出的?

JAVA开发中,如果要存一组有序的整数集合可以怎样实现?

如果要存一组有序的 int数据***,我们可以如何实现?通常我们会想到最常见的两种实现方案:

1. 数组

JAVA语言链表实现大整数加法,java语言链表实现大整数加法的方法-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

可能大多数同学最先想到的是用数据实现,将有序的数据***存放在数据中,可以使用二分法进行查找,效率比较高,但是对于新增和删除操作并不友好,因为这些操作都需要移动后面位置元素

2. 链表

那么有没有什么数据结构可以让查询、新增、删除操作都变得很快呢?这就是我们今天要介绍的跳跃表了,让我们看几张图,很容易理解。

JAVA语言链表实现大整数加法,java语言链表实现大整数加法的方法-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

银行服务器是如何实现存储超大数字而不会溢出的?

广而泛之不谈具体场景吧。

我们可以根据数字的大小动态分配内存位数不够了就再往上加。就好比我们从小学的加法从来没有限制过操作数的大小。纸有多长就能写多长。

只是这么做我们就不能享受机器言中硬件对整个整数所有32个位批量处理并且解决进位待遇了。我们必须手动迭代管理进位。

JAVA语言链表实现大整数加法,java语言链表实现大整数加法的方法-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

打个最直观但低效的例子。我们可以使用链表,将二进制数的低数位放在列表方向,进行比如加法运算时同时迭代两个操作数的链表,按位相加,再加上上一位的进位,如此构造结果。这甚至是可以单纯靠布尔逻辑而不依赖硬件加法实现

当然,我们没有必要完全舍弃硬件带来的"批处理"功能。而且事实上,硬件中的"行波进位加法器"就是通过上面描述的原理实现的。只是行波进位加法器使用定长数组罢了。那么,我们可以在数组或者链表中,以硬件一批次能处理的大小存储大整数,用硬件实现的加法完成组内进位。而硬件加法产生溢出时通过比如在某一特殊寄存器中立下的flag告诉我们是否应该往下一组数位中输入进位。

如果是浮点数的话就用科学计数法吧。"浮点"这个叫法的来源就是这个。

到此,以上就是小编对于JAVA语言链表实现大整数加法的问题就介绍到这了,希望介绍关于JAVA语言链表实现大整数加法的2点解答对大家有用

标签: 加法 实现 进位