如何用Java进行二进制算术运算?

时间:2013-03-11 23:41:54

标签: java string math binary arithmetic-expressions

对于Java赋值,我需要能够通过命令行(无论多大)将任何数字作为字符串传递给二进制文件。

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

我的问题首先是:

如何将字符串转换为二进制文件

例如:

123将成为1111011

8403678将成为100000000011101011011110

等等......

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

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

例如:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

假设您想要添加。

  1. 考虑如何手动添加大数字。您使用每个数字的哪个数字,以及如何操纵它们以获得答案?这个算法相当简单,一旦你可以解释它,你也可以给计算机指示这样做。 (另外,你首先添加一个数字,然后是十位数等等......如果必须,请记得随身携带!)
  2. 请注意,您可以使用charAt(int n)等方法获取数字字符串的数字。这将返回字符串索引n处的字符。使用Integer.parseInt()(它接受一个数字字符串并将其转换为整数)将其转换为整数。
  3. 所以现在你可以想:如果我想要一个数字的数字,那么字符串中的索引是什么?从这开始,你应该能够弄清楚如何从一个大数字字符串中获得你想要的任何数字。现在,您可以实现您的算法。
  4. 最后,要从十进制转换为二进制,您需要了解数字库的工作原理。这给出了清晰而快速的介绍:http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary 上面链接中的“从十进制转换为二进制”部分描述了一种确切的方法。祝好运。