转自http://blog.csdn.net/thebestdavid/article/details/10982395
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y; //输入的两个数
int inBit = 0x0000;
int tailBit = 0x0001;
int result = 0,Rbit;
int XlastBit,YlastBit;
int inBitREP;
printf("please input two numbers :");
scanf("%d%d",&x,&y);
while(tailBit) //tailBit计算哪一位时,该位上为1
{
XlastBit = x&tailBit; //取x的最后一位
YlastBit = y&tailBit; //取y的最后一位
Rbit = XlastBit^YlastBit^inBit; //或运算 inBit保存上次运算该位的结果
inBitREP = 0;
if( (XlastBit == tailBit && YlastBit == tailBit) || ( XlastBit == tailBit && inBit == tailBit) || (YlastBit == tailBit && inBit == tailBit)) //超过两个1,则进位为1
{
inBitREP = tailBit<<1; //后移一位 相当于进位
}
inBit = inBitREP; //进位后赋值给inBit 中间结果 要么那位是0 要么是1
result = result|Rbit; //保留1的数
tailBit = tailBit<<1; //tailBit右移一位
}
printf("The result is %d\n",result);
system("pause");
return 0;
}