首页 > 其他 > 详细

JZ48 不用加减乘除做加法

时间:2021-04-10 22:47:51      阅读:30      评论:0      收藏:0      [点我收藏+]

不用加减乘除做加法

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

思路:

这题首先1)计算不进位的加法,5 + 7 = 02;
    2)计算进位。5 +7 = 10;
    3)将1和2相加,10 + 2 = 12;
第一步就是异或操作,第二步首先使用&操作得到都为1的那些位,然后一定记得左移一位才是得到进位,因为10 & 10 = 10,但是应该要进位,所以<<1。
还有就是为什么需要一个循环,因为第一步和第二步相加,也可能进位,所以循环的终止条件是进位为0的时候才终止。
func Add(num1, num2 int) int {
    p1 := 0
    p2 := 0
    
    for num2 != 0 {
        p1 = num1 ^ num2
        p2 = (num1 & num2) << 1           
       
        num1 = p1
        num2 = p2
    }        
    return num1
} 

 

JZ48 不用加减乘除做加法

原文:https://www.cnblogs.com/dingxiaoqiang/p/14642031.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!