public class BinaryNumberAddition2_1_4
{
/**
* 此程序使用数组对二进制数进行存储和相加运算
*
* @data 2015-6-12
* @author lemma
*/
// doPlus方法
public void doPlus(int[] arrayA, int[] arrayB, int[] arrayC)
{
// carry存储进位情况运算位下一位的进位情况,默认无进位
int carry = 0;
// 从最低位开始运算
for (int index = arrayA.length - 1; index >= 0; index--)
{
// 对应元素相等情况下的值
if (arrayA[index] == arrayB[index])
arrayC[index + 1] = 0 + carry;
// 对应元素不相等情况下的值
else if (arrayA[index] != arrayB[index])
arrayC[index + 1] = (1 + carry) % 2;
// 计算下一位的进位值
if ((arrayA[index] + arrayB[index] + carry) > 1)
carry = 1;
else
carry = 0;
}
// 若进位值为1,则最高位为1,否则为0
if (carry == 1)
arrayC[0] = 1;
else
arrayC[0] = 0;
// 输出结果
for (int c : arrayC)
System.out.print(c + " ");
}
public static void main(String args[])
{
int arrayA[] = { 1, 0, 0, 0, 1, 0, 1 };
int arrayB[] = { 1, 1, 1, 0, 0, 0, 1 };
int arrayC[] = new int[8];
new BinaryNumberAddition2_1_4().doPlus(arrayA, arrayB, arrayC);
}
}