数学-不用加减乘除做加法-JZ48

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

输入: 1,2
返回值: 3

思路:
无进位和用异或,进位用&
在这里插入图片描述
代码

public class Solution {
    public int Add(int num1,int num2) {
        int res = 0;
        //进位
        int ans = 0;
        do {
            res = num1^num2;
            ans = (num1&num2) << 1;
            num1 = res;
            num2 = ans;
        } while (ans != 0);
        return res;
    }
}
### 关于加减乘除运算符的使用方 在编程中,加减乘除运算符是非常基础的操作之一,广泛应用于各种场景。以下是这些运算符的具体用以及一些高级应用。 #### 基本定义与操作 加减乘除运算符分别对应 `+`、`-`、`*` 和 `/` 符号,在大多数编程语言中用于执行基本的数值计算[^1]。 例如: ```cpp int a = 5; int b = 3; // 加法 int sum = a + b; // 结果为8 // 减 int difference = a - b; // 结果为2 // 乘 int product = a * b; // 结果为15 // 除 double quotient = static_cast<double>(a) / b; // 防止整数除截断的结果为1.666... ``` 需要注意的是,如果参与运算的数据类型是整型(如 int),那么即使结果是一个浮点数,也会被截断成整数形式[^3]。因此建议显式转换数据类型来获得精确的小数结果。 --- #### 运算符重载的应用 某些情况下可以自定义对象的行为使其支持标准运算符。比如通过 **运算符重载** 技术让类实例之间也能完成类似于数字间的加减乘除操作。下面以 C++ 中复数类为例说明: ```cpp class Complex { public: double real, imag; Complex(double r = 0, double i = 0): real(r), imag(i){} // 定义加法运算符重载函数 Complex operator+(const Complex& c){ return Complex(this->real + c.real, this->imag + c.imag); } // 定义减运算符重载函数 Complex operator-(const Complex& c){ return Complex(this->real - c.real, this->imag - c.imag); } }; ``` 上述代码片段展示了如何利用成员函数的形式实现两个复数相加的功能。同样也可以扩展至其他二元运算符(`-*`)或者一元运算符(-),甚至还可以处理不同类型之间的混合运算(如复数和整数)[^4]。 --- #### 动态解析表达式的案例(C#) 除了静态编译期间确定下来的简单表达式外,有时候还需要让用户自由输入复杂的数学公式字符串并即时求解其值。这时可以通过构建语树或调用第三方库解决这个问题[^2]。这里给出一个简单的递归下降算框架作为参考: ```csharp using System; namespace CalculatorApp{ public class Program{ private string expression; public void Parse(string expr){ this.expression=expr.Replace(" ",""); Console.WriteLine(Evaluate()); } private double Evaluate(){ var result=MultiplyDivide(); while(expression.StartsWith("+") || expression.StartsWith("-")){ char op=expression[0]; expression=expression.Substring(1).TrimStart(); double nextValue=MultiplyDivide(); if(op=='+')result+=nextValue; else result-=nextValue; } return result; } ... } } ``` 此段伪代码仅作示意用途,实际开发过程中还需补充更多细节才能满足需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值