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

不用加减乘除做加法

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num1 int整型 
 * @param num2 int整型 
 * @return int整型
 */
int Add(int num1, int num2 ) {
    // write code here
    int ret = 0;
    int flag = 0;//进位
    int tmp = 0;
    for (int i = 0; i < 32; i++, num1 >>= 1, num2 >>= 1)
    {
        if ((num1 & 1) == 1 || (num2 & 1) == 1)
        {
            if ((num1 & 1) == 1 && (num2 & 1) == 1)
            {
                tmp <<= 1;
                tmp |= flag;
                flag = 1;
            }
            else
            {
                if (flag == 1)
                {
                    tmp <<= 1;
                    tmp |= 0;
                    flag = 1;
                }
                else 
                {
                    tmp <<= 1;
                    tmp |= 1;
                }
            }
        }
        else 
        {
            tmp <<= 1;
            tmp |= flag;
            flag = 0;
        }
    }
    for (int i = 0; i < 32; i++)
    {
        ret <<= 1;
        ret |= tmp & 1;
        tmp >>= 1;
    }
    return ret;
}

全部评论

相关推荐

点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
昨天 18:54
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务