面试题47:不用加减乘除做加法

原创 2016年05月30日 19:58:22
#include <iostream>
using namespace std;


int Add( int num1, int num2 )
{
	int sum = 0;
	int carry = 0;
	
	do
	{
		sum = num1 ^ num2;
		carry = ( num1 & num2 ) << 1;
		num1 = sum;
		num2 = carry;
	}while( num2 != 0 );
	
	return num1;
}

/*
a = 5;  // 101
b = 17;  // 10001
按如下步骤计算a+b:

1) 不考虑进位相加: 101 + 10001 = 10100
2) 记录进位: ( 101 & 10001 ) << 1 = 10
3) 将前两步结果相加: 10100 + 10 = 10110
4) 如果第三步还有进位,则重复2),3)步,直到进位为0,此时第三步的和就为a+b的结果;
 
*/

int main()
{
	int ret = 0;
	
	int a = 0;
	int b = 0;
	
	while( cin >> a >> b )
	{
		cout << Add( a, b ) << endl;
	}
	
	
	return ret;
}

面试题42:不用加减乘除做加法

分析: (1)十进制加法分三步:(以5+17=22为例) 1. 只做各位相加不进位,此时相加结果为12(个位数5和7想家不进位是2,十位数0和1相加结果是1); 2. 做进位,5+7中有进位,进位的值...
  • htyurencaotang
  • htyurencaotang
  • 2013年09月05日 13:31
  • 4525

面试题47:不用加减乘除做加法

题目:
  • lom9357bye
  • lom9357bye
  • 2015年05月01日 14:53
  • 187

47 大结局 不用加减乘除做加法

描述: 实现代码: package question47; public class AddTwoNumbers {     static int Add(int num1,int num2){ ...
  • u012150590
  • u012150590
  • 2016年07月20日 10:32
  • 220

不用加减乘除做加法

/* * 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 */...
  • quentinschuman
  • quentinschuman
  • 2017年12月12日 11:18
  • 13

不用加减乘除做加法

题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 /* 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。...
  • wl_ss
  • wl_ss
  • 2017年12月25日 19:51
  • 23

不用加减乘除做加法

首先我们分析一下十进制加法是如何计算的,比如是如何得出5+17=22这个结果的。一般可以分成3步进行: 1)只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结...
  • yzl11
  • yzl11
  • 2015年10月27日 13:18
  • 431

剑指offer 面试题47 不用加减乘除做加法

剑指offer 面试题47 不用加减乘除做加法 题目: 写一个函数,求两个整数之和,要求在函数体内不得使用加减乘除四则运算。 package algorithm.foroffer.top50...
  • liyazhou0215
  • liyazhou0215
  • 2017年06月04日 19:46
  • 178

不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解答  首先,我们分析人们是如何做十进制的加法的。例如,如何得到7+15=22这个结果。实际上,我们可以分成三步进...
  • sjt091110317
  • sjt091110317
  • 2016年03月05日 15:49
  • 294

不用加减乘除做加法

题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 语言:c/c++ 分析: 求两数之和四则运算都不能用,那还能用什么啊?对呀,还能用什么呢?...
  • summer2day
  • summer2day
  • 2017年11月09日 21:18
  • 30

不用加减乘除做加法

解析:例如计算(5,17)                          5的二进制是101,17的二进制是10001。将计算分为三步:                  (1) 各位相加但不计...
  • u010138811
  • u010138811
  • 2016年05月07日 15:39
  • 270
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面试题47:不用加减乘除做加法
举报原因:
原因补充:

(最多只允许输入30个字)