如何用java实现加减_用Java实现不用加减乘除做加法操作

面试题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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值