请用java写【题目描述】:输入两个二进制数,求两个数相加的结果 【输入格式】:从键盘输入两个正整数n1和n2,代表两个二进制数的位数,接下来两行输入长度分别为n1和n2的数组,数组元素为0或者1(长度大于1时,第一个元素必不为0),数组元素用空格隔开 【输出格式】:依次输出一个由0和1组成的数组,表示输入的两个二进制数的和
时间: 2023-03-31 12:00:22 浏览: 141
以下是Java代码实现:
import java.util.Scanner;
public class BinaryAddition {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n1 = input.nextInt();
int n2 = input.nextInt();
int[] a = new int[n1];
int[] b = new int[n2];
for (int i = ; i < n1; i++) {
a[i] = input.nextInt();
}
for (int i = ; i < n2; i++) {
b[i] = input.nextInt();
}
int[] c = addBinary(a, b);
for (int i = ; i < c.length; i++) {
System.out.print(c[i] + " ");
}
}
public static int[] addBinary(int[] a, int[] b) {
int n = a.length;
int m = b.length;
int[] c = new int[Math.max(n, m) + 1];
int carry = ;
for (int i = ; i < c.length; i++) {
int sum = carry;
if (i < n) {
sum += a[n - 1 - i];
}
if (i < m) {
sum += b[m - 1 - i];
}
c[c.length - 1 - i] = sum % 2;
carry = sum / 2;
}
if (c[] == ) {
int[] d = new int[c.length - 1];
for (int i = ; i < d.length; i++) {
d[i] = c[i + 1];
}
return d;
} else {
return c;
}
}
}
输入样例:
4 5
1 1 1
1 1 1
输出样例:
1 1