(Java版)按照从右往左加的策略:
public static int[] addBin(int[] a, int[] b) {
int[] sum = new int[a.length + 1];
int jinwei = 0;
for (int i = a.length - 1; i >= 0; i--) {
if (i == 0) {
sum[1] = (a[0] + b[0] + jinwei) % 2;
sum[0] = (a[0] + b[0] + jinwei) / 2;
} else {
sum[i + 1] = (a[i] + b[i] + jinwei) % 2;
jinwei = (a[i] + b[i] + jinwei) / 2;
}
}
return sum;
}
public static void main(String[] args) {
int[] a = {0, 1, 1, 1, 1};
int[] b = {0, 1, 1, 1, 1};
int[] c = addBin(a, b);
System.out.print(0);
for (int i : a) {
System.out.print(i);
}
System.out.println();
System.out.print(0);
for (int i : b) {
System.out.print(i);
}
System.out.println();
for (int i : c) {
System.out.print(i);
}
System.out.println();
}