如何输入和添加两个二进制数字? [Java]

问题描述 投票:0回答:3

我是Java的初学者。在对w3resource进行一些练习时,我遇到了困扰我的问题。基本上我需要输入两个二进制数并将其相加。我想知道有没有更简单的方法,而无需输入二进制数字作为long变量(因为在本练习的给定解决方案中),并且如果没有更简单的方法,有人可以解释使用while循环的位置代码的末尾?

提前感谢!

/*given solution*/
import java.util.Scanner;
public class Exercise17 {
 public static void main(String[] args)
 {
  long binary1, binary2;
  int i = 0, remainder = 0;
  int[] sum = new int[20];
  Scanner in = new Scanner(System.in);

  System.out.print("Input first binary number: ");
  binary1 = in.nextLong();
  System.out.print("Input second binary number: ");
  binary2 = in.nextLong();

  while (binary1 != 0 || binary2 != 0) 
  {
   sum[i++] = (int)((binary1 % 10 + binary2 % 10 + remainder) % 2);
   remainder = (int)((binary1 % 10 + binary2 % 10 + remainder) / 2);
   binary1 = binary1 / 10;
   binary2 = binary2 / 10;
  }
  if (remainder != 0) {
   sum[i++] = remainder;
  }
  --i;
  System.out.print("Sum of two binary numbers: ");
  while (i >= 0) {
   System.out.print(sum[i--]);
  }
   System.out.print("\n");  
 }
} 
java binary addition
3个回答
1
投票

[它们使用long并将其解释为二进制数字,例如:如果输入10,它将是十进制2的二进制表示。因此,使用long作为输入这些数字的最简单方法。

现在为while循环

((二进制1%10 +二进制2%10 +余数)

这将最后一位数字(使用% 10取模)求和。结果可能有两位数字(在二进制系统中)。最后的数字再次使用模(% 2)取并放入结果数组。第一位数字放入ramainder中,以将其添加到下一位数字。


1
投票

我认为更简单的方法可能是将您的二进制数字读为String,然后执行以下操作

String b1 = "101";
String b2 = "1000";

BigInteger bi1 = new BigInteger(b1, 2);
BigInteger bi2 = new BigInteger(b2, 2);

BigInteger result = bi1.add(bi2);

System.out.println(result.longValue());
System.out.println(result.toString(2));

最后两行以十进制然后以二进制形式显示输出。


1
投票

有两种方法可以使用Integer包装器类轻松完成。

Integer.toString(0b+yournum + 0b+othernumber,2);

例如:-

Integer.toString(0b101 + 0b110 ,2); 

需要Java 7及更高版本。

将输入作为字符串并使用parseInt方法

int n1 = “101”;
int n2 = “110”;
int sum = Integer.parseInt(n1,2) + Integer.parseInt(n2,2);
Integer.toBinaryString(sum);

Ps:-此方法限制为最大int大小2147483647,否则将引发异常

© www.soinside.com 2019 - 2024. All rights reserved.