2 solutions

  • 1
    @ 2024-12-7 20:42:32
    #include <bits/stdc++.h>
    using namespace std;
    long long num[40], mun[40];
    long long n, ans = 0;
    int main()
    {
    	cin >> n;
    	for(int i = 32;i >= 1;i--)//细节倒序 
    	{
    		num[i] = n%2;//数组模拟二进制 
    		n/=2;
    	}
    	for(int i = 1;i <= 16;i++)
    	{
    		mun[i] = num[i+16];
    	}
    	for(int i = 17;i <= 32;i++)
    	{
    		mun[i] = num[i-16];
    	}
    	for(int i = 1;i <= 32;i++)
    	{
    		ans += pow(2, 32-i)*mun[i];//mun[i]只有1或0  
    	}
    	cout << ans;
    	return 0;
    }
    /*
    //位运算
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	unsigned int n;
    	cin>>n;
    	unsigned int x, y;
    	y=n>>16;
    	x=n<<16;
    	cout << x;
      cout << y;
    	return 0;
    }
    */
    
    
    • 1
      @ 2024-12-6 19:35:24
      #include<bits/stdc++.h>
      
      using namespace std;
      int main(){
      	unsigned int n;
      	cin>>n;
      	unsigned int p1,p2;
      	p2=n>>16;//获取前十六位
      	p1=n<<16;//获取后十六位
      	cout<<p1+p2;
      	return 0;
      }
      
      • 1

      Information

      ID
      193
      Time
      1000ms
      Memory
      64MiB
      Difficulty
      6
      Tags
      # Submissions
      57
      Accepted
      18
      Uploaded By