用Java实现不用加减乘除做加法操作

本文介绍了一种不使用加减乘除运算实现整数相加的方法。通过位运算中的异或和按位与操作,结合循环结构,巧妙地实现了两个整数的加法运算。

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

面试题1:不用加减乘除,求两个整数的和。


import java.util.Scanner;


public class GetSum {

	/**
	 * 不用加减乘除做加法;
	 * 十进制中的18和7相加;可以分成这样三步来计算:一.无进位的各个位相加得18+7=15;二.18加7的进位是10
	 * 三.用一和二的结果相加15+10=25
	 * 对数字运算除了使用四则运算,那就剩下位运算了,而位运算是针对二进制的运算
	 * 18在计算机中用:10010   7在计算机中用:111
	 * 一.无进位的各个位相加得10010+111=10101;注意观察相加的结果值和  这两个数进行异或的值相等
	 * 二.进位是10010+111=100  求两数相加的进位,相当于两数做按位与运算后再左移一位
	 * 三.再用10101+100发现还有进位,用10101和100重复第一第二步骤,异或得10001
	 *   按位与后左移一位得 进位值是1000
	 *   此时10001+1000=11001 没有进位,相当于两数做异或运算
	 *   
	 *   所以编程时,只要写一个循环 对两个数反复做  异或和按位与后左移一位操作  直到没有进位后
	 *   输出两个数的异或值。
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.print("a= ");
		int a = sc.nextInt();
		System.out.print("b= ");
		int b = sc.nextInt();
        System.out.println("a+b="+add(a,b));
	}
	
	public static int add(int a,int b){
		int sum,carry;
		do{
			sum = a^b;
			carry = (a&b)<<1;
			a = sum;
			b = carry;
		}while(carry!=0);
		return sum;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值