题目描述】:输入两个二进制数,求两个数相加的结果【输入格式】:从键盘输入两个正整数n1和n2,代表两个二进制数的位数,接下来两行输入长度分别为n1和n2的数组,数组元素为0或者1(长度大于1时,第一个元素必不为0),数组元素用空格隔开【输出格式】:依次输出一个由0和1组成的数组,表示输入的两个二进制数的和
时间: 2024-02-12 09:04:45 浏览: 23
以下是Java语言的实现方式:
```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[] arr1 = new int[n1];
int[] arr2 = new int[n2];
for (int i = 0; i < n1; i++) {
arr1[i] = input.nextInt();
}
for (int i = 0; i < n2; i++) {
arr2[i] = input.nextInt();
}
int[] result = addBinary(arr1, arr2);
for (int i = 0; i < result.length; i++) {
System.out.print(result[i] + " ");
}
}
public static int[] addBinary(int[] a, int[] b) {
int m = a.length;
int n = b.length;
int[] result = new int[Math.max(m, n)];
int carry = 0;
for (int i = m - 1, j = n - 1, k = result.length - 1; k >= 0; i--, j--, k--) {
int sum = carry;
sum += (i >= 0) ? a[i] : 0;
sum += (j >= 0) ? b[j] : 0;
result[k] = sum % 2;
carry = sum / 2;
}
if (carry != 0) {
int[] finalResult = new int[result.length + 1];
finalResult[0] = carry;
for (int i = 1; i < finalResult.length; i++) {
finalResult[i] = result[i - 1];
}
return finalResult;
}
return result;
}
}
```
这个程序使用了`Scanner`类来从键盘读取输入,并将两个输入的二进制数存储在两个数组中。`addBinary()`方法实现了二进制加法,它使用了逆序的方式来从低位到高位计算二进制数的和。如果最高位的进位不为零,则需要在最高位添加一个额外的1,并将结果返回。程序最后输出了计算结果。