美文网首页
2018-07-06 Lintcode 1

2018-07-06 Lintcode 1

作者: Hanxi_3c20 | 来源:发表于2018-07-06 15:27 被阅读0次

笔记:

1. x==0?y:x => if(x==0){

                          return y;

                          }

                         else return x;

2. 通过测试,该加法计算方法对于负数也能够完美实现,但是在计算机语言中负数是以补码的形式存放的,也就是说一个正数的相反数就是该正数的二进制形式取反加一。

例如:对于字节型的1,在内存中的存放形式是0000 0001,而-1则是1的反码(1111 1110)加上1,即1111 1111。对于这样形式的负数仍能以上面的实现原理来理解吗,

不把负数当做一个负数,而把整个数当做一个没有负数标记位的正数。

然后,我们可以取一个数,然后将其取反,不难知道,将这个数和其反码相加的结果永远是全部为1,例如0011 0101与1100 1010加起来就是1111 1111。如果这个数据类型有n位,那么用它表示的一个整数和它的反码的和的值可以用2^n-1的形式二进制形式来表示,即a+~a=2^-1。而我们知道相反数数的表示形式其实是反码加一,所以对于一个数a,其相反数-a的表示形式就是:-a=(2^n-1-a)+1=2^n-a 。

接着,当我们把负数当做正数来看的话,对于两个整数a和b,我们假设它们的最高位都为0,即我们所认识的正数,那么a+b=add(a,b)。那么当我们要计算a的相反数和b的和的时候,我们可以先得到a的相反数的表现形式2^n-a,但是我们把它看做一个正数,然后调用该方法add(2^n-a,b) ,计算的结果本来应当是是2^n-a+b的二进制形式。

1.当b>a的时候该结果的值已经大于2^n-1,结果是向第n+1位进一,但是计算机是不会保存这个一的,因为该数据类型只有n位,于是得到的二进制表现形式其实是2^n-a+b-2^n即b-a的二进制表现形式,显然这个数就是-a和b的和的值。

 second point from CSDN 一眼认定 

public class Solution {

    /**

    * @param a: An integer

    * @param b: An integer

    * @return: The sum of a and b

    */

    public int aplusb(int a, int b) {

        // write your code here

        while(b != 0){

            int _a = a^b;

            int _b = (a&b)<<1;

            a = _a;

            b = _b;

        }

        return a;

    }

}


相关文章

  • 2018-07-06 Lintcode 1

    笔记: 1. x==0?y:x => if(x==0){ return y; } ...

  • 程序员常用的刷题网站

    1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各...

  • 2018-07-08

    2018-07-06 c6_李晓红Dorothy 2018-07-06 07:11 · 字数 191 · 阅读 0...

  • LintCode问题图解-1

    本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读...

  • LintCode问题图解-61

    本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者...

  • LintCode问题图解-49

    本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅...

  • LintCode问题图解-52

    本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅...

  • LintCode问题图解-56

    本文准备讲解1个简单的算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者...

  • LintCode问题图解-55

    本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅...

  • LintCode问题图解-53

    本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅...

网友评论

      本文标题:2018-07-06 Lintcode 1

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