java实现加减乘除法

标签:
求职面试经典算法实现加减乘除法数据结构与算法leetcodejava |
分类: 求职面试算法 |
阿里蚂蚁金服的面试中出现:要求手写实现“乘除法”
快手的面试中曾出现:使用位运算实现整数加法运算
public class BinaryOperation {
public static void main(String[] args) throws Exception {
System.out.println(binaryAdd(-6, -15));
System.out.println(binaryMulti(5, 6));
System.out.println(binaryMulti2(5, 6));
System.out.println(binaryDiv(6, 3));
}
private static int binaryAdd(int a, int b) {// 正负数都包含在里面,不用分开处理
int s = a ^ b;// 不考虑进位的和
int jw = a & b;// 进位
// 下面是 s + (jw<<1) 的计算
while (jw != 0) {
int jw_temp = s & (jw << 1);// 保存s + (jw<<1)的进位
s = s ^ (jw << 1);// 保存s + (jw<<1)的和,不包含进位
jw = jw_temp;// 赋值之后,还是计算s+(jw<<1),依旧是计算:进位以及不进位的和,当进位为0时,不进位的和就是最终的计算结果
}
return s;
}
private static int binaryMulti(int a, int b) {// 计算a*b
if (a == 0 || b == 0)
return 0;
int res = 0;
int base = a;
while (b != 0) {