java 二进制加法 数组的方法实现10000以内
时间: 2023-07-07 09:22:26 浏览: 42
下面是Java代码实现10000以内的二进制加法,使用数组的方法实现:
```java
public class BinaryAddition {
public static void main(String[] args) {
int[] binary1 = {1, 0, 1, 0};
int[] binary2 = {1, 1, 0, 1};
// 补足 0,使两个二进制数位数相等
while (binary1.length < binary2.length) {
binary1 = insertZero(binary1);
}
while (binary2.length < binary1.length) {
binary2 = insertZero(binary2);
}
int[] result = new int[binary1.length];
int carry = 0;
for (int i = binary1.length - 1; i >= 0; i--) {
int bit1 = binary1[i];
int bit2 = binary2[i];
int sum = bit1 + bit2 + carry;
// 计算当前位的值和进位
int bit = sum % 2;
carry = sum / 2;
// 将当前位的值添加到结果数组中
result[i] = bit;
}
// 如果最高位有进位,则在结果数组中添加 1
if (carry == 1) {
result = insertOne(result);
}
// 输出二进制表示
System.out.print("二进制表示:");
for (int i : result) {
System.out.print(i);
}
}
// 插入一个 0 到数组的最前面
private static int[] insertZero(int[] arr) {
int[] newArr = new int[arr.length + 1];
newArr[0] = 0;
System.arraycopy(arr, 0, newArr, 1, arr.length);
return newArr;
}
// 插入一个 1 到数组的最前面
private static int[] insertOne(int[] arr) {
int[] newArr = new int[arr.length + 1];
newArr[0] = 1;
System.arraycopy(arr, 0, newArr, 1, arr.length);
return newArr;
}
}
```
在上面的代码中,我们首先定义了两个二进制数组 `binary1` 和 `binary2`,然后使用一个循环来补足 0,使两个二进制数位数相等。接着,我们创建一个新的整数数组 `result` 用来保存计算结果。然后,我们从最低位开始遍历这两个二进制数,逐位进行加法运算,并计算出当前位的值和进位。最后,如果最高位有进位,则在结果数组中添加 1。最终,我们输出二进制表示。在这个实现中,我们还定义了两个辅助方法 `insertZero()` 和 `insertOne()` 来插入 0 和 1 到数组的最前面。