#include <bits/stdc++.h>
using namespace std;
//十进制转换为任意进制:n是待转换的十进制数,m是待转换成的进制数,结果为字符串类型
string de2k(int n, int m)
{
string ans = "";
do
{ //使用do{}while()循环类型以防止输入为0的情况
int t = n % m;
if (t >= 0 && t <= 9)
ans += (t + '0');
else
ans += (t + 'a' - 10);
n /= m;
} while (n);
reverse(ans.begin(), ans.end());
return ans;
}
int main()
{
int a;
int b;
int n_left, n_right;
int a_new, b_new;
cin >> a >> b;
cout << de2k(a, 16) << endl; //要求1
cout << de2k(b, 16) << endl; //要求2
int c;
c = a ^ b;
cout << de2k(c, 16) << endl; //要求3
n_left = (a >> 8) & 0xff; //取高8位
n_right = b & 0xFF; //取低8位
n_left = n_left << 8;
n_left = n_left | n_right; //或上低位
cout << hex << n_left << endl; //要求4
// 101010101010101 = 0x5555
// 010101010101010 = 0x2AAA
a_new = a & 0x5555; //取第0,2,4,6,8,10,12,14
b_new = b & 0x2AAA; //取第1,3,5,7,11,13,15
a_new = a_new | b_new; //或
cout << hex << a_new << endl; //要求5
}
评论0