【问题标题】:How to do arithmetic operations in binary with Java?如何用Java进行二进制算术运算?
【发布时间】:2013-02-27 08:15:22
【问题描述】:

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

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

我的问题是第一个:

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

例如:

123 会变成 1111011

8403678 将变为 100000000011101011011110

等等……

那么最大的问题就是让它们相加、相减等等。

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

例如:

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

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

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

【问题讨论】:

标签: java string math binary arithmetic-expressions


【解决方案1】:

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

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

假设你想做加法。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多