Java 是否将字符串转换为大整数?
我有一个任务(我认为这是一个很常见的任务),目标是开发一个可以使用..进行计算的大型Integer类。。非常大的整数 显然,我根本不允许使用Java 是否将字符串转换为大整数?,java,Java,我有一个任务(我认为这是一个很常见的任务),目标是开发一个可以使用..进行计算的大型Integer类。。非常大的整数 显然,我根本不允许使用Java.math.bigeinteger类 就在顶部,我被卡住了。我需要从用户那里获取2个字符串(长数字),然后我将使用这些字符串执行各种计算方法(加法、除法、乘法等) 有人能给我解释一下这背后的理论吗?在我从用户那里获取字符串(因为它太大了,无法存储在int中)之后,我是否应该将它拆分为10位长数字块(我认为10是最大长度,可能是9?) 感谢您的帮助 对
Java.math.bigeinteger
类
就在顶部,我被卡住了。我需要从用户那里获取2个字符串(长数字),然后我将使用这些字符串执行各种计算方法(加法、除法、乘法等)
有人能给我解释一下这背后的理论吗?在我从用户那里获取字符串(因为它太大了,无法存储在int中)之后,我是否应该将它拆分为10位长数字块(我认为10是最大长度,可能是9?)
感谢您的帮助 对于类似的任务,我会给你一些建议,但让你了解细节
我从来没有真正构建过这样的类,所以希望这里有一些您可以使用的东西。我会给您一些建议,告诉您如何处理类似的任务,但让您了解细节
我从来没有真正构建过这样的类,所以希望这里有一些您可以使用的东西。首先,考虑一下存储数字的方便数据结构。考虑如何将
N
数字存储到int[]
数组中
现在让我们以加法为例。您将如何添加两个N
数字
使用小学加法,首先我们看两个数字的最低有效位(在标准符号中,这将是最右边的数字)。然后把它们加起来
因此,如果最右边的数字是7
和8
,我们将得到15
。取这个结果的最右边的数字(5
),这是答案的最低有效位。1
被转入下一次计算。现在我们来看第二个最低有效位,并将其与进位相加(如果没有进位,则为0
)。然后重复,直到没有数字可加为止
基本思想是,当数字存储在某些数据结构中时,如何手动将加法、乘法等转换为代码。首先,考虑一下存储数字的方便数据结构。考虑如何将
N
数字存储到int[]
数组中
现在让我们以加法为例。您将如何添加两个N
数字
使用小学加法,首先我们看两个数字的最低有效位(在标准符号中,这将是最右边的数字)。然后把它们加起来
因此,如果最右边的数字是7
和8
,我们将得到15
。取这个结果的最右边的数字(5
),这是答案的最低有效位。1
被转入下一次计算。现在我们来看第二个最低有效位,并将其与进位相加(如果没有进位,则为0
)。然后重复,直到没有数字可加为止
基本思想是,当数字存储在某些数据结构中时,如何手动将加法、乘法等转换为代码。请查看Michael Bromberger为MPI 1.8.6编写的源代码(一个C库)。它对bignum和简单算法使用简单的数据结构。它是C语言,不是Java语言,而是简单易懂的语言 它的划分执行得很差(并且导致非常大的bignum到tex的转换很慢),但是您可以按照代码进行操作 有一个函数
mpi_read_radix
可以读取任意基数中的数字(最多36个基数,其中字母Z为35),并带有可选的前导+/-符号,并生成一个bignum
我最近选择该代码作为编程语言解释器,因为尽管它不是最快的执行者,也不是最完整的,但它非常容易被破解。我已经能够自己重写平方根到一个更快的版本,修复一些影响端口到64位数字的编码错误,并添加一些我需要的缺失操作。加上lic