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

不用加减乘除做加法

作者头像
猿人谷
发布2018-01-17 09:52:26
7570
发布2018-01-17 09:52:26
举报
文章被收录于专栏:猿人谷猿人谷

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

分析:

第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。

第二步:进位,对0加0,0加1,1加0而言,都不会产生进位,只有1加1时,会向前产生1个进位。此时我们刻意想象成是两个数先做位与运算,然后再向左移动一位。

第三步:相加的过程依然是重复前面两步,知道不产生进位为止。

如下是一段基于循环实现的参考代码:

代码语言:javascript
复制
int Add(int num1, int num2)
{
    int sum, carry;
    do{
        sum = num1 ^ num2;
        carry = (num1 & num2) << 1;
        
        num1 = sum;
        num2 = carry;
    }while(num2 != 0);
    
    return num1;
}

相关题目:

不使用新的变量,变换两个变量的值。比如有两个变量a,b,希望交换它们的值。

代码语言:javascript
复制
a = a ^ b;
b = a ^ b;
a = a ^ b;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-04-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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