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语言位运算实现加法的主要内容,如果未能解决你的问题,请参考以下文章

用C语言如何实现大数据的加法,且是包括整数和小数的运算?

keil MDK-ARM 如何实现64位加法

请问怎样用加法-移位实现定点乘除法?

使用python调用c语言实现100000000次加法运算速度对比

js 如何实现加法?

ZZNUOJ_用C语言编写程序实现1153:大整数加法(附完整源码)