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

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

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

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

例:
 

 扫VX 领Java资料,前端,测试,python等等资料都有

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值