zoukankan      html  css  js  c++  java
  • 不用加减乘除做加法

    题目描述

    写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
    思路:使用^ 和 & 实现加法运算,
    a^b 得到的结果是未进位的值
    a&b 左移一位    得到的是进位值
    将两个相加就是结果(相加过程重复上述,知道没有进位为止)

    代码:

          int Add(int num1, int num2)
        {
            int n = num1 ^ num2;
            int jw = num1 & num2;
            int tmp = 0;
            while(jw)
            {
                jw <<= 1;
                 tmp = n;
                 n = jw ^ n;
                jw = jw & tmp;
            }
            return n;
        }

    或者简化变量的写法;

        public int Add(int num1,int num2) {
            while (num2!=0) {
                int temp = num1^num2;
                num2 = (num1&num2)<<1;
                num1 = temp;
            }
            return num1;
        }

    递归写法:

     int Add(int num1, int num2)
        { 
          return num2 ? Add(num1^num2, (num1&num2)<<1) : num1;
     
        }
  • 相关阅读:
    九九乘法表
    计算器界面
    3.2封装的日期类
    杨辉三角
    100以内的素数
    九九 乘法表
    七、logging模块
    六、MySQLdb 模块
    四、浏览器运行模式
    五、configparser模块
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/9139934.html
Copyright © 2011-2022 走看看