如何使用位运算实现一个加法呢?

如何使用位运算实现一个加法呢?

今天面试遇到这样一个奇葩的要求,使用位运算实现一个加法,那么如何实现呢?

 

今天收到小伙伴的信息,
面试官讲一个题目:“编写一个加法函数,函数中不能使用四则运算符号,需使用位运算”
实现一个加法的功能,具体的实现思路如下所示:

实现思路:
借助异或运算的特性—-无进位加法
借助与运算—相同为1
——–首先将两个异或运算,得到无进位的值
——–然后借助与运算的结果(向右移动一位–进位)
使用递归循环运行以上的步骤,直到与运算的结果为0(无进位),则停止

例:
 

package com.java265.other;
public class Test10 {
public static void main(String[] args) {
System.out.println(add(10, 20));
}
/*
* java265.com 使用位运算实现一个加法
*/
private static int add(int a,int b)
{
int r1 =0;
int r2 =0;
do {
r1 = a ^b;
r2 = (a&b)<<1;
a = r1;
b = r2;
} while (r2 != 0);
return r1;
}
}
------运行以上代码,将输出以下信息----
30
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 如何使用位运算实现一个加法呢?