求两个数的和,不允许用四则运算符

本文介绍了一种使用位运算实现整数加法的方法,通过异或操作完成不进位加法,通过与操作及左移实现进位,并递归进行直至无进位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解题思路:
1、 四则运算不能算的情况下,肯定只能借助位运算,所以应该考虑位运算
2、 假设两个数的二进制位00001 和 10001,两个数相加的过程就是

  • 第一步:先把二进制的各位相加但不进位,10001;
  • 第二步:记下进位,00001
  • 第三步:把前两步的结果相加,得到10010

分析上述三个过程发现

  • 第一步实际上就是两个数的异或结果
  • 第二步进位就是两个数&的结果再左移一位:
  • 第三步是两数相加,和要求的一样可以递归进行,直到第二个数为0为止。
    代码实现:

    class Solution {
    public:
        int Add(int num1, int num2)
        {
            do{
                int sum=num1^num2;
                int carry=(num1&num2)<<1;
                num1=sum;
                num2=carry;
            }while(num2!=0);
            return num1;
        }
    };
    
### 编写一个简单的程序以从键盘输入个数运算符并输出计算结果 以下是一个完整的 Python 程序示例,用于实现用户需的功能。该程序允许用户从键盘输入个数字以及一个运算符,并根据所选的运算符输出相应的计算结果。 #### 程序逻辑描述 1. 接收用户输入的第一个数值、运算符以及第二个数值。 2. 根据输入的运算符执行对应的操作(加、减、乘、除)。 3. 对于除法操作,特别检查分母是否为零,如果是,则输出错误信息。 4. 如果用户提供了一个在范围内的运算符,则提示“Invalid operation!”。 #### 完整源代码示例 ```python def simple_calculator(): try: # 提示用户输入第一个数字 num1 = float(input("请输入第一个数字: ")) # 提示用户输入运算符 operator = input("请输入运算符 (+, -, *, /): ") # 提示用户输入第二个数字 num2 = float(input("请输入第二个数字: ")) if operator == "+": result = num1 + num2 elif operator == "-": result = num1 - num2 elif operator == "*": result = num1 * num2 elif operator == "/": if num2 != 0: result = num1 / num2 else: print("Wrong! Division by zero!") return else: print("Invalid operation!") return print(f"{num1} {operator} {num2} = {result}") except ValueError: print("输入有误,请确保输入的是有效数字!") simple_calculator() ``` #### 功能说明 1. **输入验证**: 使用 `try-except` 块捕获可能因非数字输入引发的异常[^1]。 2. **基本运算**: - 加法 (`+`) 减法 (`-`) 的处理方式直接使用标准算术运算符。 - 乘法 (`*`) 同样采用常规方法。 - 除法 (`/`) 特别加入了对分母为零的情况的检测机制[^2]。 3. **非法运算符处理**: 当用户输入属于 `{'+', '-', '*', '/'}` 的字符时,程序将输出 “Invalid operation!” 并终止当前流程[^3]。 4. **结果显示**: 计算完成后,将以格式化字符串的方式展示原始表达式及其结果。 --- #### 示例运行结果 ##### 正常情况下的加法运算: ``` 请输入第一个数字: 10 请输入运算符 (+, -, *, /): + 请输入第二个数字: 5 10.0 + 5.0 = 15.0 ``` ##### 处理除法中的零分母错误: ``` 请输入第一个数字: 8 请输入运算符 (+, -, *, /): / 请输入第二个数字: 0 Wrong! Division by zero! ``` ##### 非法运算符的例子: ``` 请输入第一个数字: 7 请输入运算符 (+, -, *, /): ^ 请输入第二个数字: 3 Invalid operation! ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值