前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【剑指offer】48.不用加减乘除做加法

【剑指offer】48.不用加减乘除做加法

作者头像
AI那点小事
发布2020-08-24 14:44:55
2820
发布2020-08-24 14:44:55
举报
文章被收录于专栏:AI那点小事AI那点小事

题目

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。


分析

题目要求不能使用加减乘除做加法,那么唯一的办法使用位运算来实现两位数的加法。位运算实现加法的两个主要步骤就是实现两个数无进位加法以及两个数加法中符号进位。其中第一个操作就是异或运算,第二个就是按位与并左移1位,重复上述操作直至符号位为0。

github链接:JZ48-不用加减乘除做加法


C++代码

代码语言:javascript
复制
#include <iostream>
using namespace std; 

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

int main()
{
	int num1,num2;
	Solution s;
	while(cin>>num1>>num2){
		cout<<s.Add(num1,num2)<<endl;
	}
	
	
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 分析
  • C++代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档