Ở đây chúng ta sẽ thấy cách chúng ta có thể viết một chương trình có thể thêm n số nhị phân đã cho dưới dạng chuỗi. Phương pháp dễ dàng hơn là bằng cách chuyển đổi chuỗi nhị phân thành chuỗi tương đương thập phân của nó, sau đó thêm chúng và chuyển đổi lại thành nhị phân. Tại đây, chúng tôi sẽ thực hiện việc bổ sung theo cách thủ công.
Chúng tôi sẽ sử dụng một hàm trợ giúp để thêm hai chuỗi nhị phân. Hàm đó sẽ được sử dụng trong n-1 lần cho n chuỗi nhị phân khác nhau. Hàm sẽ hoạt động như bên dưới.
Thuật toán
addTwoBinary (bin1, bin2)
begin s := 0 result is an empty string now i := length of bin1, and j := length of bin2 while i >= 0 OR j>=0 OR s is 1, do if i >=0 then, s := s + bin1[i] as number else s := s + 0 end if if j >=0 then, s := s + bin2[j] as number else s := s + 0 end if result := (s mod 2) concatenate this with result itself s := s/2 i := i - 1 j := j - 1 done return result end
Ví dụ
#include<iostream> using namespace std; string addTwoBinary(string bin1, string bin2) { string result = ""; int s = 0; //s will be used to hold bit sum int i = bin1.length() - 1, j = bin2.length() - 1; //traverse from LSb while (i >= 0 || j >= 0 || s == 1) { if(i >= 0) s += bin1[i] - '0'; else s += 0; if(j >= 0) s += bin2[j] - '0'; else s += 0; result = char(s % 2 + '0') + result; s /= 2; //get the carry i--; j--; } return result; } string add_n_binary(string arr[], int n) { string result = ""; for (int i = 0; i < n; i++) result = addTwoBinary(result, arr[i]); return result; } main() { string arr[] = { "1011", "10", "1001" }; int n = sizeof(arr) / sizeof(arr[0]); cout << add_n_binary(arr, n) << endl; }
Đầu ra
10110