美文网首页
A+B的问题

A+B的问题

作者: myjourney | 来源:发表于2018-08-21 10:33 被阅读59次

一.问题描述:给出两个整数a和b,求他们的和

二.问题说明

a和b都是 32位 整数么?

是的

我可以使用位运算符么?

当然可以

样例

如果 a=1 并且 b=2,返回3。

挑战

显然你可以直接 return a + b,但是你是否可以挑战一下不这样做?(不使用++等算数运算符)

三.思路:

和sum其实就是x XOR y的结果。而进位carry恰好是x AND y的结果

1.通过对x和y进行&位运算,得出每一位上的进位。

2.对x和y进行^位运算,得出没有加进位的和。

3.将所得的和当做新的x,所得的进位往左移一位(第零位的进位输入为0)当做新的y,继续做上面的步骤,直到进位为0。

此时x中保存的就是x和y的和了。

但是要注意:若a+b正好为0,用位运算就陷入循环...

四.参考:

def aplusbt(a, b):

    if a == 0:

        return b

    if b == 0:

        return a

    if a+b == 0:

        return 0

    while (b != 0):

        _a= a ^ b

        _b= (a & b)<< 1

        a= _a

b= _b

return a

相关文章

  • A+B的问题

    一.问题描述:给出两个整数a和b,求他们的和 二.问题说明 a和b都是32位整数么? 是的 我可以使用位运算符么?...

  • A+B问题

    A+B问题 描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 思路: 1、 采用二进制进...

  • A+B问题

    lintcode算法题 1.A + B 问题 描述给出两个整数 a和 b, 求他们的和。你不需要从输入流读入数据,...

  • A+B问题

    A+B问题 问题描述输入A、B,输出A+B。 输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。 输出...

  • A+B问题

    不用加号计算A+B,我们用异或运算和与运算以及位运算来实现同等的操作,A^B的二进制异或运算,相当于没有进位的加号...

  • TJOJ 1000 以及OJ使用注意事项

    v1.0.01a 菜如我 TJ-SSE A+B problem 以及oj使用问题 1. 简单的加法运算"A+B ...

  • Lanqiao:A+B问题

    问题: 代码:

  • lintcode A+B问题

    这道题我们当然可以 return a + b来AC,但是那并不是此题的本意,这道题的意思是让我们不使用加号来实现加...

  • 1、A+B问题

    题目描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符 思路 二进制的数字用0、1表示,两数相...

  • A+B问题(2.1.1)——顺序结构程序设计

    A+B问题 【题目描述】给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。...

网友评论

      本文标题:A+B的问题

      本文链接:https://www.haomeiwen.com/subject/mlsdiftx.html