Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java进行二进制算术运算?_Java_String_Math_Binary_Arithmetic Expressions - Fatal编程技术网

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

如何用Java进行二进制算术运算?,java,string,math,binary,arithmetic-expressions,Java,String,Math,Binary,Arithmetic Expressions,对于Java赋值,我需要能够通过命令行(无论有多大)将作为字符串引入的任何数字传递到二进制文件中 然后生成允许这些数字加、乘、减、除的方法 我的第一个问题是: 如何将字符串转换成二进制 例如: 123将变成1111011 8403678将变成100000001110101011110 等等 然后最大的问题是让它们相加,互相减法,等等 最后,我需要能够将结果从二进制转换回十进制,与前一种情况(从二进制转换为十进制字符串)相比,我在理解如何操作时遇到了更多的困难 例如: 如果将1111011添加到1

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

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

我的第一个问题是:

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

例如:

123将变成1111011

8403678将变成100000001110101011110

等等

然后最大的问题是让它们相加,互相减法,等等

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

例如:

如果将1111011添加到10000000001110101011110,结果将是10000000001110101011001,然后它将成为8403801,我将作为结果打印出来


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


如果需要任何额外的信息,请告诉我,我会立即回答。

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

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

说你想做加法

  • 想想你是如何手工添加大数字的。您使用每个数字的哪些数字,以及如何处理它们以获得答案?这个算法相当简单,一旦你能解释它,你也可以给计算机指示如何去做。(对于加法,你先加1的数字,然后再加10的数字,等等……如果必须的话,记得带上!)
  • 请注意,您可以使用
    charAt(int n)
    等方法获取数字字符串的位数。这将返回字符串索引n处的字符。使用
    Integer.parseInt()
    (获取数字字符串并将其转换为整数)将其转换为整数
  • 所以现在你可以想:如果我想要一个数字的一位数,那么字符串中的索引是什么?从这里开始,您应该能够了解如何从大数字字符串中获取所需的任何数字。现在,您可以实现您的算法了 最后,要从十进制转换为二进制,您需要了解基数是如何工作的。这提供了一个清晰、快速的介绍:
    上面链接中的“从十进制转换为二进制”一节描述了一种方法,可以精确地实现您想要做的事情。祝你好运

    看看BigInteger类。它会帮助你开始。在那之后,想想很多被2除的循环,取模2。如果你做这个练习,你必须理解二进制及其算法。只有这样,您才能准备将这些知识转换为Java。网上有很多信息。例如maple:或者这个项目的最终目标是创建我们自己的类,比如java.math.biginger(当然不使用它),并处理任意大的数字(大于Int可以处理的)。