1

对于 Java 分配,我需要能够将通过命令行(无论多大)作为字符串引入的任何数字传递到二进制文件中。

然后生成允许这些数字加、乘、减和除的方法。

我的问题首先是:

如何将我的字符串变成二进制

例如:

123 将变为 1111011

8403678 将变为 100000000011101011011110

等等……

然后最大的问题是让它们相加、相减等。

最后,我需要能够将结果从二进制转换回十进制,这比前一种情况(从二进制转换为十进制字符串)更难以理解如何做到这一点。

例如:

如果将 1111011 添加到 100000000011101011011110 中,则结果将是 100000000011101101011001 ,然后它将变为 8403801 ,结果我将打印出来。

这个项目的最终目标是创建我们自己的类,例如 java.math.BigInteger(当然不使用它)并处理任意大的数字(比 Int 可以处理的更大)。

如果需要任何额外的信息,请告诉我,我会及时回复。

4

1 回答 1

0

由于您必须能够在不使用 BigInteger 的情况下处理大数,因此您需要找到一种表示任意大数的方法。显然int不会这样做。一种简单的方法是将数字表示为字符串。例如,数字 123 可以存储为字符串“123”。

转换为二进制需要一些中间操作,例如除法和取模。因此,当您的数字存储在字符串中时,值得考虑如何执行这些操作。由于这是家庭作业,我不想只给你答案,而是一些指导。

说你想做加法。

  1. 想想你如何手动添加大数字。您使用每个数字的哪些数字,以及如何操纵它们来获得答案?这个算法相当简单,一旦你能解释它,你也可以给计算机指示去做。(除此之外,您先添加个位,然后添加十位等……如果必须,请记住携带!)
  2. 请注意,您可以使用诸如charAt(int n). 这将返回字符串索引 n 处的字符。通过使用将其转换为整数Integer.parseInt()(它接受一个数字字符串并将其转换为整数)。
  3. 所以现在你可以想:如果我想要一个数字的数字,那么字符串中的索引是什么?从这里开始,您应该能够弄清楚如何从大数字字符串中获取您想要的任何数字。现在,您可以实现您的算法。

最后,要将基数从十转换为二进制,您确实需要了解数字基数的工作原理。这给出了一个清晰而快速的介绍:http ://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary 上面链接中的“从十进制转换为二进制”部分描述了一种方法正是你想要做的。祝你好运。

于 2013-03-27T22:03:04.103 回答