不用加减乘除做加法

来源:互联网 发布:短信可爱铃声软件 编辑:程序博客网 时间:2024/05/29 18:35

    问题:写一个函数,求两个整数之和,要求在函数体内不得使用加、减、乘、除四则运算符号。(运用二进制与或非和移位操作)

int Add(int num1, int num2){    int sum, carry;    do    {        sum = num1 ^ num2;        carry = (num1 & num2) << 1;        num1 = sum;        num2 = carry;    }    while(num2 != 0);    return num1;}// ====================测试代码====================void Test(int num1, int num2, int expected){    int result = Add(num1, num2);    if(result == expected)        printf("%d + %d is %d. Passed\n", num1, num2, result);    else        printf("%d + %d is %d. Failed\n", num1, num2, result);}int _tmain(int argc, _TCHAR* argv[]){    Test(1, 2, 3);    Test(111, 899, 1010);    Test(-1, 2, 1);    Test(1, -2, -1);    Test(3, 0, 3);    Test(0, -4, -4);    Test(-2, -8, -10);}
扩展:不使用交换新的变量,交换两个变量的值,比如两个变量a、b



0 0