问题描述:
对下面代码中的a进行位操作(只能进行位运算),实现输出OPQ
int a = 0x434241;
printf("%s\n", (char*)&a);
参考代码:
#include <stdio.h>
int add(int a, int b)
{
//思路: a+b=a^b + (a&b)<<1;其中a^b是不考虑进位的加,只有位相同才有进位所以(a&b)<<1则是进位的值,
//每进行一次操作,进位末尾补0,也就是说,最多进行b的二进制位数次操作即可完成计算
if (b == 0)
return a;
return add(a ^b, (a&b) << 1);
}
int main()
{
int a = 0x434241;
//a = (a ^ 0x51504F) ^ a;
a = add(a, 0x0e0e0e);
printf("%s\n", (char*)&a);
return 0;
}