Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将字符串转换为大整数?_Java - Fatal编程技术网

Java 是否将字符串转换为大整数?

Java 是否将字符串转换为大整数?,java,Java,我有一个任务(我认为这是一个很常见的任务),目标是开发一个可以使用..进行计算的大型Integer类。。非常大的整数 显然,我根本不允许使用Java.math.bigeinteger类 就在顶部,我被卡住了。我需要从用户那里获取2个字符串(长数字),然后我将使用这些字符串执行各种计算方法(加法、除法、乘法等) 有人能给我解释一下这背后的理论吗?在我从用户那里获取字符串(因为它太大了,无法存储在int中)之后,我是否应该将它拆分为10位长数字块(我认为10是最大长度,可能是9?) 感谢您的帮助 对

我有一个任务(我认为这是一个很常见的任务),目标是开发一个可以使用..进行计算的大型Integer类。。非常大的整数

显然,我根本不允许使用
Java.math.bigeinteger

就在顶部,我被卡住了。我需要从用户那里获取2个字符串(长数字),然后我将使用这些字符串执行各种计算方法(加法、除法、乘法等)

有人能给我解释一下这背后的理论吗?在我从用户那里获取字符串(因为它太大了,无法存储在int中)之后,我是否应该将它拆分为10位长数字块(我认为10是最大长度,可能是9?)


感谢您的帮助

对于类似的任务,我会给你一些建议,但让你了解细节

  • 看看简单的电子加法器电路是如何加法的。具体来说,它们使用小的加法块组合在一起。这些原则将有所帮助。具体来说,您可以添加块,只需记住从一个块延续到下一个块
  • 你把它分成几个小博客的想法很好。只要记住正确的转换。我怀疑9位数字是正确的,用于结转等目的
  • 这些任务将帮助您进行加法和减法运算。乘法和除法有点复杂,但还是有一些技巧

  • 乘法是比较容易的任务,只需记住将一个数字的每个块与另一个数字相乘,并携带零
  • 整数除法基本上可以像长除法一样,一次只使用整个块

  • 我从来没有真正构建过这样的类,所以希望这里有一些您可以使用的东西。

    我会给您一些建议,告诉您如何处理类似的任务,但让您了解细节

  • 看看简单的电子加法器电路是如何加法的。具体来说,它们使用小的加法块组合在一起。这些原则将有所帮助。具体来说,您可以添加块,只需记住从一个块延续到下一个块
  • 你把它分成几个小博客的想法很好。只要记住正确的转换。我怀疑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