现在的位置: 首页 > 综合 > 正文

利用异或移位操作实现的加法

2012年07月07日 ⁄ 综合 ⁄ 共 328字 ⁄ 字号 评论关闭

代码如下:

#include <stdio.h>

typedef unsigned int u32;

u32 plus (u32 A, u32 B)
{
	u32 C, D;
	
	C = A^B;
	D = A&B;
	while(D != 0)
	{
		D = D<< 1;
		A = C;
		B = D;	
		C = A^B;
		D = A&B;
	} 
	
	return C;
}
main()
{
	printf("%d\n", plus(3, 40) == 43);
	printf("%d\n", plus(30, 40) == 70);
	printf("%d\n", plus(3, 400) == 403);
	printf("%d\n", plus(3000, 400) == 3400);
}

参考:http://zhidao.baidu.com/question/535671893?quesup2&oldq=1

抱歉!评论已关闭.