兩個n位二進位制整數相加的問題
阿新 • • 發佈:2019-01-10
考慮把兩個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為進位。
來自演算法導論