Advertisement
sushmoyr

Binary Multiplication

Jul 22nd, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string toBinary(int n)
  4. {
  5.     string s;
  6.     while(n)
  7.     {
  8.         s.push_back((n%2)+'0');
  9.         n/=2;
  10.     }
  11.     reverse(s.begin(),s.end());
  12.     return s;
  13. }
  14. string sum(string a, string b)
  15. {
  16.     reverse(a.begin(),a.end());
  17.     reverse(b.begin(),b.end());
  18.     while(a.size()!=b.size())
  19.     {
  20.         if(a.size()<b.size())
  21.             a.push_back('0');
  22.         else
  23.             b.push_back(48);
  24.     }
  25.  
  26.     int carry=0,temp;
  27.     string ans="";
  28.     for(int i=0; i<a.size(); i++)
  29.     {
  30.         temp=(a[i]-48)+(b[i]-48);
  31.         temp+=carry;
  32.         carry=0;
  33.         ans.push_back((temp%2)+48);
  34.         carry=((temp/2)%2);
  35.     }
  36.     //cout<<"carry = "<<carry<<endl;
  37.     while(carry)
  38.     {
  39.         ans.push_back((carry%2)+48);
  40.         carry/=2;
  41.     }
  42.     reverse(ans.begin(),ans.end());
  43.     return ans;
  44. }
  45. void multiply(int x, int y)
  46. {
  47.     string a=toBinary(x);
  48.     string b=toBinary(y);
  49.     //cout<<a<<endl<<b<<endl;
  50.     string val="0", ans="";
  51.     for(int i=b.size()-1,k=0; i>=0; i--,k++)
  52.     {
  53.         val="";
  54.         for(int j=0; j<a.size(); j++)
  55.         {
  56.             val+=((a[j]-48)&(b[i]-48))+48;
  57.         }
  58.         if(ans.empty())
  59.             ans=val;
  60.         else
  61.         {
  62.             for(x=0; x<k; x++)
  63.                 val+='0';
  64.             ans=sum(ans,val);
  65.         }
  66.     }
  67.     cout<<ans<<endl;
  68. }
  69.  
  70. int main()
  71. {
  72.     long long a,b;
  73.     //Enter First Number
  74.     cin>>a;
  75.     //Enter Second Number
  76.     cin>>b;
  77.     multiply(a,b);
  78.  
  79.  
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement