两个2的n次幂相加
题目
求两个2的n次幂的数相加的值,n大于10即可,比如2的22 + 2的22
程序分析
这道题其实不仅考察对运算的技巧也考察对逻辑的基本要求
具体代码
方法一
对于小白的我来说,心想:这不白给吗,于是写下了代码
double result = Math.pow(2, 22) + Math.pow(2, 22);
System.out.println("result = " + result);
但是面试官看到后说到,不能用封装好的方法,这样不能考察出什么
方法二
既然不让用api,那就用运算符
int result = (1 << 22) + (1 << 22);
System.out.println(result);
<<:左位移运算符,用于将一个数的二进制位向左移动指定的位数,低位补0,常用于快速乘以2的幂操作,每次左移一位相当于将数字乘以2
做完之后面试官一看,***这小子真的是不懂我的意思,然后又说也不能用运算符
方法三
这不让用,那不让用,再见!!!当然这只是心里所想,人在屋檐下,不得不低头。开启循环大法
int result = multiply(2, 22) + multiply(2, 22);
System.out.println(result); private int multiply(int base, int exponent) {int result = 1;for (int i = 0; i < exponent; i++) {result *= base;}return result;
}
