【剑指offer】不用加减乘除做加法

题目描述

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

分析:看到这种题目,就知道应该采用位运算

两个数异或,相当于这两个数的每一位相加,但是不考虑进位

两个数相与,并且左移一位,相当于求得进位

然后将上面两步的结果相加,就是结果

复制代码
int Add(int a, int b)
{
    if(a==0)
       return b;
    if(b==0)
        return a;
    int x=a^b;       //两个数异或:相当于每一位相加,而不考虑进位
    
    int y=(a&b)<<1;  //两个数相与,并且左移一位:相当于求得进位
    
    return Add(x,y); //将上述两步的结果相加
}
复制代码
posted @   西*风  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示