新建一个单文档工程;
在视类CPP文件头部添加函数声明;
函数体可以加到视类CPP文件尾部;
int Add(int a,int b) { int jw=a&b; int jg=a^b; while(jw) { int t_a=jg; int t_b=jw<<1; jw=t_a&t_b; jg=t_a^t_b; } return jg; }
OnDraw()函数;
void CWysaddView::OnDraw(CDC* pDC){CWysaddDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;int c1 = Add(100, 99);str1.Format("%d",c1);pDC->TextOut(50, 50, str1);}
输出如下;
原理,
先用1位数的加法来进行,在不考虑进位的基础上,如下 ,
1 + 1 = 0
1 + 0 = 1
0 + 1 = 1
0 + 0 = 0
这几个表达式可以用位运算的“^”来代替,如下
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
进一步得出2位数相加,推出3位数相加,.....;