#include <stdio.h>
#include <stdlib.h>

int FullAdder(int A, int B)
{
    static int Cr;
    int S;
    if (A|B)
    {
        S=(A^B^Cr)&1;
        Cr=(A&B|Cr&(A^B))&1;
        return (FullAdder(A>>1, B>>1)<<1)|S;
    }
    return Cr;
}

int SwapBits(int X)
{
    return ((X&0x55555555)<<1)|((X&0xAAAAAAAA)>>1);
}

int main()
{
    printf("%d\n",FullAdder(999,1));
    printf("%x\n",SwapBits(0x1248));
    return 0;
}
