#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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBGdWxsQWRkZXIoaW50IEEsIGludCBCKQp7CiAgICBzdGF0aWMgaW50IENyOwogICAgaW50IFM7CiAgICBpZiAoQXxCKQogICAgewogICAgICAgIFM9KEFeQl5DcikmMTsKICAgICAgICBDcj0oQSZCfENyJihBXkIpKSYxOwogICAgICAgIHJldHVybiAoRnVsbEFkZGVyKEE+PjEsIEI+PjEpPDwxKXxTOwogICAgfQogICAgcmV0dXJuIENyOwp9CgppbnQgU3dhcEJpdHMoaW50IFgpCnsKICAgIHJldHVybiAoKFgmMHg1NTU1NTU1NSk8PDEpfCgoWCYweEFBQUFBQUFBKT4+MSk7Cn0KCmludCBtYWluKCkKewogICAgcHJpbnRmKCIlZFxuIixGdWxsQWRkZXIoOTk5LDEpKTsKICAgIHByaW50ZigiJXhcbiIsU3dhcEJpdHMoMHgxMjQ4KSk7CiAgICByZXR1cm4gMDsKfQo=