使用Java进行二进制加法

时间:2016-12-22 14:08:40

标签: java binary addition

我必须对二进制数进行求和,我正在使用反向循环,就像我们实际使用pen&纸。所以有这个两个整数的硬编码数组,其长度我已经相等,以避免任何差异。我正在检查sum&携带价值匹配然后输出应该这样&所以另外如此&所以。检查下面的代码。

我的问题是,即使在成功编译之后,为什么我在运行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); 
        } 
    }
}

2 个答案:

答案 0 :(得分:0)

{{1}}

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

答案 1 :(得分:0)

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

如果i为0,那么你将获得索引-1。