美文网首页
371. Sum of Two Integers(位操作)

371. Sum of Two Integers(位操作)

作者: Asian_Road | 来源:发表于2016-09-06 09:59 被阅读0次

    Calculate the sum of two integers a and b, but you are not allowed to use the operator+and-


    1.位操作符
    • 与 &:两个位都为1,结果才为1
    • 或 | :两个位都为0,结果才为0
    • 异或 ^:两个位相同为0,相异为1
    • 取反 ~: 0变1,1变0
    • 左移 <<:左移若干位,高位丢弃,低位补0
    • 右移 >>:右移若干位,对于无符号数 高位补0;有符号数分为算数右移(补符号位)和逻辑右移(补零)

    位操作只用于整形数据

    2.算法
    class Solution{
    public:
      int add (int a,  int b)  { 
        while(a!=0 && b!=0){ 
           int temp = a; 
            a = temp & b; 
            b = b ^ temp; 
            a = a << 1; 
        }  
        return a == 0?b:a; 
      } 
    };
    

    相关文章

      网友评论

          本文标题:371. Sum of Two Integers(位操作)

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