【问题标题】:How to input and add two binary numbers? [Java]如何输入和添加两个二进制数? [爪哇]
【发布时间】:2020-04-16 11:46:43
【问题描述】:

我是 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");  
 }
} 

【问题讨论】:

  • 将数字读取为Strings。然后你可以直接从它们中取出“1”和“0”,而不是做所有的余数除以 10。而且你不会被限制在 long 可以的 18 位左右持有。

标签: java binary addition


【解决方案1】:

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

现在是 while 循环

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

这需要最后一位数字(使用模 % 10)并将它们相加。 结果可能有两位数(二进制)。最后一位数字再次使用模数 (% 2) 并放入结果数组中。将第一个数字放入 raminder 以将其添加到下一个数字。

【讨论】:

    【解决方案2】:

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

    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));
    

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

    【讨论】:

      【解决方案3】:

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

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

      例如:-

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

      需要 java 7 及以上版本。

      将输入作为 String 并使用 parseInt 方法

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

      Ps:- 此方法仅限于最大 int 大小 2147483647 否则会抛出异常

      【讨论】:

        【解决方案4】:

        您可以使用 Scanner 轻松获取二进制输入。

            Scanner scan = new Scanner(System.in);
            System.out.print("Enter first binary number :: ");
        
            // To take binray input you just need to write 2 as a base value
            int b1 = scan.nextInt(2);
        
            System.out.print("Enter second binary number :: ");
            int b2 = scan.nextInt(2);
        
            int result = b1 + b2;
            System.out.println(result);
        

        这对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多