【IT笔试面试题整理】不用加减乘除做加法
2024-10-19 03:37:50
【试题描述】写一个函数,求两个整数的和,要求在函数体内不得使用加减乘除四则运算符合。
基本思路是这样的:
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 }
最新文章
- 利用Navigation Timing测量页面加载时间
- c# winform 全角自动转化半角问题(C#中ImeMode的值):转载
- 设计模式C#实现(三)——外观模式
- Function.caller
- windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
- 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim
- 再次深入 C# Attribute
- Spring Boot 整合 MyBatis
- ADFS3.0 Customizing the AD FS Sign-in Pages
- sql server 备份与恢复系列五 完整模式下的备份与还原
- Spring Boot系列——如何集成Log4j2
- Java 字符串拼接5种方式性能比较
- Rabbitmq-direct演示
- 判断Javascript变量是否为空 undefined 或者null(附样例)
- javascript之随手笔记
- 配置tomcat虚拟路径
- WordPress主题开发:WP_Query常用参数
- 05 JDK1.5 Lock锁
- node 下好用的工具
- 通知:spark meetup 第六次会议在北京举行