C语言位运算实现加法
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言位运算实现加法相关的知识,希望对你有一定的参考价值。
新建一个单文档工程;
在视类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 here
CString 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位数相加,.....;
以上是关于C语言位运算实现加法的主要内容,如果未能解决你的问题,请参考以下文章