Add two unsigned numbers using bits in C++.

CServer Side ProgrammingProgramming

An unsigned number represented as a stream of bits is written in binary form.

The binary form of 54 is 110110.

Adding two numbers using bits, we will add their binary form using the binary addition logic.

Rules for bit addition is −

  • 0+0 = 0
  • 1+0 = 1
  • 0+1 = 1
  • 1+1 = 0 with carry = 1

Lets take an example to add two numbers,

Input: a = 21 (10101) , b = 27 (11011)
Output: 48 (110000)

Explanation − 10101 + 11011 = 110000. We will add bits starting the least significant bit. And then propagating to the next bit.

Example

#include <bits/stdc++.h>
#define M 32
using namespace std;
int binAdd (bitset < M > atemp, bitset < M > btemp){
   bitset < M > ctemp;
   for (int i = 0; i < M; i++)
      ctemp[i] = 0;
   int carry = 0;
   for (int i = 0; i < M; i++) {
      if (atemp[i] + btemp[i] == 0){
         if (carry == 0)
            ctemp[i] = 0;
         Else {
            ctemp[i] = 1;
            carry = 0;
         }
      }
      else if (atemp[i] + btemp[i] == 1){
         if (carry == 0)
            ctemp[i] = 1;
         else{
            ctemp[i] = 0;
         }
      }
      else{
         if (carry == 0){
            ctemp[i] = 0;
            carry = 1;
         }
         else{
            ctemp[i] = 1;
         }
      }
   }
   return ctemp.to_ulong ();
}
int main () {
   int a = 678, b = 436;
   cout << "The sum of " << a << " and " << b << " is ";
   bitset < M > num1 (a);
   bitset < M > num2 (b);
   cout << binAdd (num1, num2) << endl;
}

Output

The sum of 678 and 436 is 1114
raja
Published on 19-Sep-2019 11:56:12
Advertisements