Add binary in c++
Difference between en1 and en2, changed 46 character(s)
Method: Adding the digits and any carry-over value at the right end of each binary integer, we store the result in a new string.↵
The procedure is now repeated for the following digit on the left until all of the digits in both binary numbers have been reached.↵

After adding all the digits, if there is any remaining value, add it to the end of the new string.↵
The new string is then returned as the total of the two binary numbers after being inverted.↵
here the code...↵
~~~~~

~~~~~↵
Your code here...

#include <bits/stdc++.h>↵
using namespace std;↵
int main()↵
{↵
    string a, b;↵
    cin >> a >> b;↵
    string ans;↵
    int carry = 0;↵
    int i = a.length() &mdash; 1;↵
    int j = b.length() &mdash; 1;↵

    while (i >= 0 || j >= 0 || carry)↵
    {↵
        if (i >= 0)↵
            carry += a[i--] - '0';↵
        if (j >= 0)↵
            carry += b[j--] - '0';↵
        ans += carry % 2 + '0';↵
        carry /= 2;↵
    }↵
    reverse(begin(ans), end(ans));↵
    for (int i = 0; i < ans.size(); i++)↵
    {↵
        cout << ans[i];↵
    }↵
}↵

~~~~~↵



Explain: ↵
_To hold the total and two integer variables, "carry" and "i," which represent the carry-over value and the current position in the first binary number (a), respectively, we first initialize a StringBuilder object.↵
_In order to maintain track of the current location in the second binary number (b), we further initialize another integer variable called "j."Here is how the code initializes these variables
:


~~~~~↵
StringBuilder sb = new StringBuilder();↵
int carry = 0;↵
int i = a.length() &mdash; 1;↵
int j = b.length() &mdash; 1;↵
~~~~~↵



_After that, a while loop is inserted and iterates until all the digits in both binary numbers have been processed and there is no more carry-over value.↵
_ In each iteration, we add the digits from both numbers at the current position and the carry-over value.↵
_We also update the carry-over value based on the sum of the digits.↵
_In each iteration, the current position in each binary number is moved one digit to the left (if there are any digits left to process) by decrementing the value of i and j.↵
_f there is a carry-over value from the previous iteration or the addition of the two digits produces a carry-over value, we set the value of 'carry' to 1; otherwise, we set it to 0.↵
_We also append the sum of the digits to the StringBuilder object by computing the remainder of 'carry' divided by 2 (which is either 0 or 1).↵
_Finally, we update the value of 'carry' by dividing it by 2 (which gives either 0 or 1) so that we can carry over any remaining value to the next iteration.↵
_After the while loop completes, we reverse the StringBuilder object and convert it to a string using the toString() method.↵
This gives us the sum of the two binary numbers in binary format.↵

[Learn from YT and Leetcode]↵

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English TheAnonymousAMGR 2024-03-01 11:11:40 46
en1 English TheAnonymousAMGR 2024-03-01 11:10:08 2843 Initial revision (published)