不用加减乘除做加法

来源:互联网 发布:mac book能下载爱剪辑 编辑:程序博客网 时间:2024/05/29 18:02

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

算法:
5的二进制位 : 101
7的二进制位:10001

1、将数异或(半加) 10101
2、将数按位与 1
3、只有在某个位上按位与后结果是1,才说明数之间是1和1相加,应该进位,那么将与的结果左移1位得出进位后的结果。
4、将异或结果和与结果相加。

class Solution {public:    int Add(int num1, int num2)    {        //1、异或,半加        int numxor = num1 ^ num2;        //2、按位与        int numand = num1 & num2;        numand = numand<<1;        //3、得到结果        int res = numand + numxor;        return res;    }};
0 0
原创粉丝点击