我有一个函数,它把两个二进制数作为一个整数数组,把它们相加,然后把和作为一个新的整数数组返回。
public static int[] addBin(int a[], int b[]){
int[] sum = {0, 0, 0, 0, 0, 0, 0, 0};
int carryover = 0;
int randombanana = 0;
int x = 7;
for(x = 7; x > 0; x--){
randombanana = a[x] + a[x] + carryover;
if(randombanana == 1){
sum[x] = 1;
carryover = 0;
}
else if(randombanana == 2){
sum[x] = 0;
carryover = 1;
}
else if(randombanana == 3){
sum[x] = 1;
carryover = 1;
}
else if(randombanana == 0){
sum[x] = 0;
carryover = 0;
}
else{
System.out.println("Either I [censored] up, or you [censored] up. I'm a genius so I'm going to assume you [censored] up");
}
}
if(carryover == 1){
sum[x] = 1;
}
return sum;
}
该代码在一位数的数字上工作正常,包括需要携带一个数字的数字,但在两位数或三位数的数字上,当一个数字加到自己身上时,它工作正常,但当不同的多位数加在一起时,它就不工作了。
4条答案
按热度按时间txu3uszq1#
应该是
aiqt4smr2#
for循环没有处理第0位
7gcisfzg3#
假设这两个数字的长度相同,则数字可以按如下方式相加:
py49o6xq4#
这里有一个简单明了的解决方案。