使用 Java 的二进制加法

Binary Addition using Java

我必须对二进制数求和,我使用的是反向循环,就像我们实际使用笔和纸求和一样。所以有两个整数的硬编码数组,为了避免任何差异,我已经使它们的长度相等。我正在检查总和和进位值是否匹配然后输出应该如此 & 所以否则如此 & 所以。检查下面的代码。

我的问题是为什么我在 运行 上出现关于 Array Index Out of Bounds -1 的错误,即使在编译成功之后。

public class binary{

static int sum, carry;
static int output = 0;


    public static void main(String args[])
    {
        int[] a = {1,1,0,1,1,0,0,1,0,0,1};
        int[] b = {1,0,0,0,0,0,0,0,1,0,1};

        for(int i = 10; i >= 0; i--)
        {
            if(a[i] == 0 && b[i] == 0)
            {
                sum = 0;
                carry = 0;

            }
            if(a[i] == 0 && b[i] == 1)
            {
                sum = 1;
                carry = 0;

            }
            if(a[i] == 1 && b[i] == 0)
            {
                sum = 1;
                carry = 0;

            }
            if(a[i] == 1 && b[i] == 1)
            {
                sum = 0;
                carry = 1;

            }
            if(carry == 1)
            {
                carry += a[i-1] + b[i-1];
                output = carry;
            }
            else
            {
                output += a[i] + b[i];
                output = sum;
            }
            System.out.print(output); 
        } 
    }
}
 if(carry == 1)
    {
        carry += a[i-1] + b[i-1];
        output = carry;
    }

这是导致数组越界异常的部分。因为对于 i=0,进位将包含 a[-1]+b[-1]这当然是越界的(0 和 10 是边界)

carry += a[i-1] + b[i-1];

如果 i 是 0 那么你将得到索引 -1。