Как ввести и добавить два двоичных числа? [Ява] - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в Java. Выполняя некоторые упражнения на w3resource , я столкнулся с проблемой, которая меня озадачивает. В основном мне нужно ввести два двоичных числа и добавить их. Я хотел бы знать, есть ли более простой способ сделать это без ввода двоичных чисел в качестве переменных long (как это делается в данном решении этого упражнения), и если нет более простого способа, может кто-нибудь объяснить часть, где в то время как l oop используется до конца кода?

Заранее спасибо!

/*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");  
 }
} 

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Я думаю, что более простой способ - прочитать двоичные числа как строковые и затем выполнить следующие действия:

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 голос
/ 16 апреля 2020

Есть два способа сделать это легко с помощью класса-оболочки Integer.

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

Например: -

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

Требуется java 7 и выше.

Возьмите input как String и используйте метод parseInt

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

Ps: - Этот метод ограничен макс. Размером int 2147483647, иначе он выдаст исключение

1 голос
/ 16 апреля 2020

Они используют long и интерпретируют их как двоичные числа, например: если вы введете 10, это будет двоичное представление десятичного числа 2. Поэтому они используют long как самый простой способ ввода этих чисел.

Теперь для , в то время как L oop:

(двоичный 1% 10 + двоичный2% 10 + остаток)

Это принимает последние цифры (с использованием модуля * 1009) *) и суммирует их. Результат может иметь две цифры (в двоичной системе). Последнее di git берется снова по модулю (% 2) и помещается в массив результатов. Первый di git помещается в ramainder, чтобы добавить его к следующему di git.

...