【试题描述】写一个函数,求两个整数的和,要求在函数体内不得使用加减乘除四则运算符合。

基本思路是这样的:

int A, B;
A&B //看哪几位有进位
A^B //不带进位加

考虑二进制加法的过程,

步骤一、A^B,能够得到没有进位的加法。

步骤二、A&B,能够得到相加之后,能够进位的位置的信息。向左移动一位,就是两个二进制数相加之后的进位信息。所以,(A&B)<<1就是两个二进制数相加得到的“进位结果”。

步骤三、将前两步的结果相加。相加的过程就是步骤一和步骤二,直到不再产生进位为止。

【参考代码】

 1 public static int func2(int a, int b) {
2 int sum;
3 int carry;
4 int num1 = a;
5 int num2 = b;
6 do {
7 sum = num1 ^ num2;
8 carry = (num1 & num2) << 1;
9 num1=sum;
10 num2=carry;
11 } while (carry != 0);
12 return sum;
13 }

最新文章

  1. 利用Navigation Timing测量页面加载时间
  2. c# winform 全角自动转化半角问题(C#中ImeMode的值):转载
  3. 设计模式C#实现(三)——外观模式
  4. Function.caller
  5. windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
  6. 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim
  7. 再次深入 C# Attribute
  8. Spring Boot 整合 MyBatis
  9. ADFS3.0 Customizing the AD FS Sign-in Pages
  10. sql server 备份与恢复系列五 完整模式下的备份与还原
  11. Spring Boot系列——如何集成Log4j2
  12. Java 字符串拼接5种方式性能比较
  13. Rabbitmq-direct演示
  14. 判断Javascript变量是否为空 undefined 或者null(附样例)
  15. javascript之随手笔记
  16. 配置tomcat虚拟路径
  17. WordPress主题开发:WP_Query常用参数
  18. 05 JDK1.5 Lock锁
  19. node 下好用的工具
  20. 通知:spark meetup 第六次会议在北京举行

热门文章

  1. express 错误处理
  2. 转:log4j的使用简介
  3. 5.css背景以及书写位置
  4. cxGrid动态设置单元格对齐方式
  5. C#如何在List里求某一列的數值的和SUM
  6. WPF如何设置Image.Source为资源图片
  7. WPF---DataGrid设置列的百分比宽度 &amp; 列值显示格式化
  8. 林纳斯&#183;托瓦兹和Linux行为准则:揭穿7个谬论
  9. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
  10. git fetch 、git pull 与 git pull --rebase