还是大佬厉害,我就只能一位一位地判断有没有进位

不用加减乘除做加法

http://www.nowcoder.com/questionTerminal/59ac416b4b944300b617d4f7f111b215

class Solution {
public:
    int Add(int num1, int num2)
    {
        int a = num1;
        int b = num2;
        unsigned int m = 0x00000001;    // 位置标志
        unsigned int n = 0x00000000;    // 进位标志
        int rtn = 0x00000000;

        for (int i = 0; i < 32; i++) {
            if (bool(m&a)&&bool(b&m)) { // 该位都为1
                if (bool(n))
                    rtn = (rtn | m);    // 该位设为1
                n = m << 1; // 向左有进位
            }
            else if (bool(m&a) || bool(b&m)) {  // 只有一位为1
                if (bool(n)) {  // 有低位进位,该位为0
                    n = m << 1; // 向左有进位
                }
                else rtn = rtn | m; // 没有低维进位该位为1
            }
            else {
                if (bool(n)) rtn = (rtn | m);   // 有低位进位该位为1;
                n = 0x00000000; // 没有低位进位该位为1且不进位
            }
            m = m << 1;
        }

        return rtn;
    }
};
全部评论
++应该算自增运算符,不算四则运算符吧,哈哈哈哈
点赞 回复 分享
发布于 2020-08-14 15:41

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务