2013-03-11 102 views
1

对于Java分配,我需要能够传递任何数字,这些数字将作为字符串通过命令行(无论多大)引入二进制文件。如何在Java中使用二进制进行算术运算?

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

我的问题是第一:

如何让我的字符串转换成二进制

如:

123会变成1111011

8403678将成为100000000011101011011110

等等...

然后最大的问题是让他们加起来,相互减去等。

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

如:

如果1111011加入100000000011101011011110结果将是100000000011101101011001,然后它会变成8403801我会打印出结果。

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

如果有任何额外的信息需要请让我知道我会及时回答。

+0

看看BigInteger类。它会帮助你开始。在那之后,我们想到了大量的循环除以2并取模2。 – 2013-03-11 23:46:35

+0

如果你做这个练习,你必须理解二进制和它的算术。只有这样你才能将这些知识转化为Java。网络上有很多信息。例如:http://academic.evergreen.edu/projects/biophysics/technotes/misc/bin_math.htm或http://www2.cs.uregina.ca/~rbm/cs100/notes/binary/binary.html – 2013-03-11 23:51:11

+0

这个项目的最终目标是创建我们自己的类,比如java.math.BigInteger(没有使用它)和处理任意大的数字(大于Int可以处理的数字)。 – user2155003 2013-03-11 23:53:29

回答

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 上述链接中的“从十进制转换为二进制”一节描述了一种方法,可以准确执行您想要执行的操作。祝你好运。

相关问题