Advertisement
Saleh127

UVA 594 / Bit shifting

Oct 5th, 2021
776
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define test int tt; cin>>tt; for(int cs=1;cs<=tt;cs++)
  5.  
  6. string twcom(string a)
  7. {
  8.      ll n=a.size();
  9.      ll i,j=0;
  10.  
  11.      for(i=n-1;i>=0;i--)
  12.      {
  13.           if(j==0)
  14.           {
  15.                a[i]=a[i];
  16.                if(a[i]=='1') j=1;
  17.           }
  18.           else
  19.           {
  20.                if(a[i]=='1') a[i]='0';
  21.                else a[i]='1';
  22.           }
  23.      }
  24.  
  25.      return a;
  26. }
  27.  
  28.  
  29. int main()
  30. {
  31.    ios_base::sync_with_stdio(0);
  32.    cin.tie(0);cout.tie(0);
  33.  
  34.    ll n;
  35.  
  36.    while(cin>>n)
  37.    {
  38.         string a="";
  39.  
  40.         ll x,i,j,k,l;
  41.  
  42.         x=abs(n);
  43.  
  44.         cout<<n<<" converts to ";
  45.  
  46.         while(x)
  47.         {
  48.              a+=('0'+x%2);
  49.              x/=2;
  50.         }
  51.  
  52.         while(a.size()<32) a+='0';
  53.  
  54.         reverse(a.begin(),a.end());
  55.  
  56.         if(n<0)
  57.         {
  58.              a=twcom(a);
  59.         }
  60.  
  61.         for(i=0,j=24,k=16,l=8;i<8;i++,j++,k++,l++)
  62.         {
  63.              swap(a[i],a[j]);
  64.              swap(a[k],a[l]);
  65.         }
  66.  
  67.         if(a[0]=='1')
  68.         {
  69.              a=twcom(a);
  70.              cout<<"-";
  71.         }
  72.  
  73.         x=0;
  74.         l=1;
  75.  
  76.         for(i=a.size()-1;i>=0;i--)
  77.         {
  78.              j=(a[i]-'0')*l;
  79.              x+=j;
  80.              l*=2;
  81.         }
  82.  
  83.         cout<<x<<endl;
  84.  
  85.    }
  86.    
  87.    return 0;
  88. }
  89.  
  90. /// deal negative number with two's compliment
  91.  
  92.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement