使用位运算实现加法的方法分享

本文介绍了一种面试中遇到的奇特要求——使用位运算而非四则运算符号实现加法。通过异或运算完成无进位加法,结合与运算处理进位,递归循环直至无进位,最终得出加法结果。提供的代码示例展示了如何用位运算实现加法,输出结果为30。
摘要由CSDN通过智能技术生成

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

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

实现思路:
借助异或运算的特性----无进位加法
借助与运算---相同为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

参照文章:

如何使用位运算实现一个加法呢? - java265 - 博客园

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值