不用加减乘除做加法

简介: 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。 分析: 第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。

 

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

分析:

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

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

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

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

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,希望交换它们的值。

a = a ^ b;
b = a ^ b;
a = a ^ b;

 

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
4月前
|
Python
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
首先,我们可以从基本的数学运算开始,比如加法、减法、乘法、除法等。
|
6月前
|
计算机视觉
加法运算
【5月更文挑战第8天】加法运算。
115 4
|
6月前
加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)
加减乘除简单吗?不,一点都不,利用位运算实现加减乘除(代码中不含+ - * /)
|
6月前
|
C++
C++系列-第1章顺序结构-6-加法、减法和乘法
C++系列-第1章顺序结构-6-加法、减法和乘法
剑指offer 73. 不用加减乘除做加法
剑指offer 73. 不用加减乘除做加法
61 0
大数运算!(2)减法
大数运算!(2)减法
|
Java
不用加减乘除做加法
不用加减乘除做加法
98 0
不用加减乘除做加法