【笔试】54、不用加减乘除做加法

本文介绍了一种不使用传统加减乘除运算符实现两整数相加的方法,通过位运算巧妙地完成了加法操作。具体实现了计算过程中考虑进位的加法逻辑,并通过示例代码展示了具体的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/****************************************************************************************
 *题目:不用加减乘除做加法
 *		写一个函数,求两个整数之和,要求在函数体内不得使用+、-、X、÷四则运算符号
 *时间:2015年10月6日16:33:41
 *文件:AddTwoNumbers.java
 *作者:cutter_point
 ****************************************************************************************/
package bishi.Offer50.y2015.m10.d06;

import org.junit.Test;

public class AddTwoNumbers
{
	public int add(int num1, int num2)
	{
		//显然我们应该使用位运算
		int sum, carry;
		do
		{
			sum = num1 ^ num2;	//这个是不算进位的和
			carry = (num1 & num2) << 1;	//这个是进位
			
			num1 = sum;
			num2 = carry;
		}while(num2 != 0);	//不为0表示还有进位
		
		return num1;
	}

	@Test
	public void test()
	{
		AddTwoNumbers a = new AddTwoNumbers();
		System.out.println(a.add(1, 998));
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值