1. 程式人生 > >用位操作實現加法運算

用位操作實現加法運算

問題描述:
對下面程式碼中的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; }