简述:
设想使用位操作,实现加法
思路:
1. 做与操作,得到相同的位,左移进位得到一个值
2. 做异或操作,得到不同的位,得到另一个值
上两个值循环直到其中某个为0 ,选另一个为最终结果
实现:
package com.anialy.JavaTest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class App
{
public static void main( String[] args ){
System.out.print("请输入两个数字:");
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader bufferReader = new BufferedReader(isr);
try{
String lineStr = null;
lineStr = bufferReader.readLine();
String[] nums = lineStr.split(" ");
int a = Integer.parseInt(nums[0]);
int b = Integer.parseInt(nums[1]);
System.out.println("和:" + opAdd(a,b));
}catch(IOException e){
e.printStackTrace();
}
}
private static int opAdd(final int a, final int b){
int x = a;
int y = b;
while(x!=0 && y!=0){
int xt = x;
x = xt&y;
x <<= 1;
y = xt^y;
}
return x==0?y:x;
}
}
输出: