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

标签 java string math binary arithmetic-expressions

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

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

我的问题首先是:

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

例如:

123 将变成 1111011

8403678 将变为 100000000011101011011110

等等...

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

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

例如:

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

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

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

最佳答案

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

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

假设您想要进行加法。

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

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

关于java - 如何用Java进行二进制算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350689/

相关文章:

java - 捕获 EJBTransactionRolledbackException

python - 确定 OR 正则表达式的哪个片段与字符串匹配

c - 字符串正在添加特殊字符

javascript - Google map V3 两点之间的距离 - 不同的值

java - 如何在 Java 中为错误情况实现 `finally`

java - SQLite 和 tomcat 中的并发访问

java - 为什么在使用Eclipse IDE播放.wav声音文件时出现此错误?

linux - 构建一个包含大字符串的文件

math - 找到两个函数的等价性是不可判定的吗?

java - 圆的 3D 旋转使边缘交叉两点