题解 | #不用加减乘除做加法#

不用加减乘除做加法

https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num1 int整型 
 * @param num2 int整型 
 * @return int整型
 */
int Add(int num1, int num2 ) {
    int ret = 0;
    for(int i=0;i<32;i++)//分别分析二进制的每一位
    {
       if( (num1&(1<<i))!=0  && (num2&(1<<i))!=0)  //两个数第i位上都是1
       {
            ret = ret | (1<<(i+1));//返回值下一位取1
       }
       else if( (num1&(1<<i))==0  && (num2&(1<<i))==0)//两个数第i位上都是零
       {
         ;
       }
       else {//两个数第i位上1个是1 1个是0
        if((ret&(1<<i)) == 0){//若返回值在该位上取0
       ret = ret |(1 << i);//变为1
        }
       else{//返回值在该位上取1
          ret = ret | (1<<(i+1));//返回值下一位取1
          ret = ret & (~(1<<i)); //返回值该位再置0
       }
       }
    }
    return ret;
}

全部评论

相关推荐

后端转测开第一人:wlb不好吗 非得卷
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务