1. 程式人生 > >兩個n位二進位制整數相加的問題

兩個n位二進位制整數相加的問題

考慮把兩個n位二進位制整數加起來,這兩個整數分別儲存在兩個n元陣列A和B中,這兩個整數的和應按二進位制形式儲存在一個n+1元陣列中。

虛擬碼:

ADD-BINARY(A, B):
  C = new integer[A.length + 1]

  carry = 0
  for i = 1 to A.length
      C[i] = (A[i] + B[i] + carry) % 2  // remainder
      carry = (A[i] + B[i] + carry) / 2 // quotient
  C[i] = carry

  return C

C++程式碼:
void Add_Binary()
{
	int A[5] = { 0, 1, 1, 0, 0 };
	int B[5] = { 1, 1, 0, 1, 0 };
	int C[6];
	int carry = 0;
	int i;
	for (i = 4; i >=0; --i)
	{
		C[i+1] = (A[i] + B[i] + carry) % 2;
		carry = (A[i] + B[i] + carry) / 2;
	}
	C[i+1] = carry;
}

可以用於兩個大數相加,(a+b+carry)%2為餘數,(a+b+carry)/2為商,其中carry為進位。

來自演算法導論