题目描述]: 输入两个二进制数,求两个数相加的结果 [输入格式]:从键盘输入两个正整数 n1和 n2,代表两个二进制数的位数,接下来两行输入长度分别为 n1 和 n2 的数组,数组元素为 0或者1(长度大于1 时,第一个元素必不为0),数组元素用空格隔开Java
时间: 2024-05-06 12:19:02 浏览: 66
mul.rar_MUL汇编程序_汇编语言 输入两个1位十进制数
5星 · 资源好评率100%
你好啊,欢迎和我对话!关于你的问题,我可以给出一个Java代码实现:
```
import java.util.Scanner;
public class BinarySum {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n1 = input.nextInt();
int n2 = input.nextInt();
int[] a1 = new int[n1];
int[] a2 = new int[n2];
for (int i = 0; i < n1; i++) {
a1[i] = input.nextInt();
}
for (int i = 0; i < n2; i++) {
a2[i] = input.nextInt();
}
int[] res = binarySum(a1, a2);
for (int i = res.length - 1; i >= 0; i--) {
System.out.print(res[i] + " ");
}
}
public static int[] binarySum(int[] a1, int[] a2) {
int len = Math.max(a1.length, a2.length);
int[] res = new int[len + 1];
int carry = 0;
for (int i = 0; i < len; i++) {
int sum = carry;
if (i < a1.length) {
sum += a1[i];
}
if (i < a2.length) {
sum += a2[i];
}
res[i] = sum % 2;
carry = sum / 2;
}
if (carry > 0) {
res[len] = carry;
}
else {
int[] newRes = new int[len];
System.arraycopy(res, 0, newRes, 0, len);
res = newRes;
}
return res;
}
}
```
这段代码实现了输入两个二进制数,求它们相加的结果。具体思路是对每一位进行加法运算,将进位保存下来并在下一位相加时加上。最后需要注意是否还有进位,如果有的话需要在最高位加上。我希望我的回答能对你有所帮助!
阅读全文