用位运算计算两数的和

文章目录

  • 用位运算计算两数的和
    • 方法一:
    • 方法二:

方法一:

//方法一:
//sum为计算结果
//carry为进位
int bitAdd(int a, int b)
{if (b == 0)//当进位为0的时候,就可以返回了return a;int sum = a ^ b;//计算a和b中不同时为1的位之和,剩下的//就是a和b中同时位1的情况int carry = (a&b) << 1;//代表进位,如果不为0,就说明a和b中有有同时为//1的情况,同时为1的为相加必然要进位,进位方式就是左移,//然后继续计算sum和carry的和//当然sum和carry的和也有可能出现某个位同时为1 的情况,继续递归即可//递归结束条件就是当sum和carry相加没有进位,直接返回return bitAdd(sum, carry);
}

方法二:

//方法二:
//a&b是为了把a和b中同为1的两位相加,那么既然两位同为1,
//也就代表在2进制中要发生进位,在位运算中如何进位呢?
//把结果左移一位即可,右边刚好补0;
//a^b是为了计算a为0,b为1,或者a为1,b为0的情况,
//这种不会进位,直接相加即可
int Add(int a, int b)
{return ((a & b) << 1) + (a^b);
}

用位运算计算两数的和相关推荐

  1. 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...

    01 前言 那年刚找工作那会,就碰到过这么一个简单的题目1.都是作为逻辑与的运算符.2.&&具有短路功能,计算出前者false,就不需计算后者的true or false.后来在微信群 ...

  2. 【计算两数之和】不使用加减乘除

    计算两数之和不论在计算机中还是生活中,都不算难(即使某些数据过大).但是如何能更高效的计算时一个难题,或者说在计算机内部是如何解析两个数之间的加法的,这就成了一个可以探讨的问题. 当然我们很了解十进制 ...

  3. linux-shell脚本-利用shell函数计算两数之和--思考return原理

    一.实例1(错误代码) 在shell脚本的学习过程中,遇到定义一个带有return语句的函数,来计算两数之和,代码如下: #!/bin/bash funWithReturn(){echo " ...

  4. 用一句位运算判断两个整数的大小并返回较大者

    2019独角兽企业重金招聘Python工程师标准>>> 用一句位运算判断两个整数的大小并返回较大者,不用if..else,不用循环,不用switch,不用条件运算符 const in ...

  5. 位运算求两个数的平均值

    一直不理解位运算求两个数的平均值.参考网上资料后终于明白. 如下: 求两个数的平均值的算法:Avg = (ValueA & ValueB) + (ValueA ^ ValueB) >&g ...

  6. 用函数计算两数之和和两数之积

    函数的优点 函数是面向过程编写的最重要的语法结构 在工程上函数可以使我们的代码更具有结构性,更加美观 函数也可以提升我们的代码可维护性 运用函数计算两数之和和两数乘积 int MyAdd(int _x ...

  7. 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...

  8. 6-1 计算两数的和与差 (10 分)

    6-1 计算两数的和与差 (10 分) 本题要求实现一个计算输入的两数的和与差的简单函数. 函数接口定义: void sum_diff( float op1, float op2, float *ps ...

  9. 通过位运算进行两个变量值的交换功能

    通过位运算进行两个变量值的交换功能 一般交换方法 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 位运算交换方法 采 ...

最新文章

  1. (C++)1022 D进制的A+B 除基取余法将10进制数换成给定进制数
  2. R语言应用substr函数和substring函数抽取(extract)、删除(Remove)、替换、匹配(Match)特定的字符串、并对比两个函数的异同、grepl检查子字符串是否存在于字符串中
  3. 批量管理服务器,批量分发文件
  4. Java程序员时刻铭记的Git常用命令
  5. 前端笔记-thymeleaf获取及回显input标签type=time
  6. learnyou 相关网站
  7. 在Mac上使用鼠标键来控制指针的方法
  8. storm配置:如何解决worker进程内存过小的问题
  9. 微信小游戏引擎插件,Creator 使用教程!
  10. GlobalMapper 脚本应用(持续更新)
  11. 淘宝运营之:店铺信用分计算规则
  12. 数据库系统概论(高级篇)
  13. 【阅读分享】红楼梦第一回-甄士隐的故事
  14. HDU 5698 瞬间移动 (组合数 + 阶乘逆元)
  15. 计算机大赛鼓励语录,鼓励参加比赛的话
  16. Error: The project seems to require yarn but it‘s not installed.
  17. Ping命令出现 Packet filtered
  18. 《柳叶刀》专刊 | 城市设计、交通与人群健康:篇一
  19. fastqc v0.11.8
  20. iphone充电图_为什么我的iPhone无法充电?

热门文章

  1. yii2 关掉php notice,yii2关闭错误提示
  2. log4j2.xml 的标签 loggers 中 root 的属性 level 指的是什么
  3. 优化 UI 应用启动时间的方法
  4. 设计模式之工厂模式(四)
  5. 深蓝词库转换1.2版本发布——支持紫光拼音和拼音加加
  6. 项目ITP(一) 二维码
  7. Android深入浅出系列之Android工具的使用—调试桥ADB(二)
  8. SQL基本语句语法释义
  9. 使用cpan安装perl模块
  10. Windows Phone 7项目实战之记事本(二)