当前位置:   article > 正文

两个数不使用四则运算得出和_两个数不用四则运算

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

// 按位异或 每一位都不同,结果才为 1
// 8 ^ 7 // -> 15
// 8 ^ 8 // -> 0
// 1000 ^ 0111 -> 1111 -> 15
// 1000 ^ 1000 -> 0000 -> 0

// 这道题中可以按位异或,因为按位异或就是不进位加法,
// 8 ^ 8 = 0 如果进位了,就是 16 了,
// 所以我们只需要将两个数进行异或操作,然后进位。
// 那么也就是说两个二进制都是 1 的位置,
// 左边应该有一个进位 1,
// 所以可以得出以下公式 a + b = (a ^ b) + ((a & b) << 1) ,
// 然后通过迭代的方式模拟加法

function Add(num1, num2) {
    if (num1 == 0) return num2
    if (num2 == 0) return num1
    let newA = num1 ^ num2
    let newB = (num1 & num2) << 1
    return Add(newA, newB)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/175679
推荐阅读
相关标签
  

闽ICP备14008679号