次方编程
2016-03-12 12:12
204 查看
求一个数的n次方
1、C语言
最小整数在程序语言中不是-2^31,^是异或运算。
最小整数为((unsigned int)(-1) >> 1) + 1);
举例8位: -1=11111111
(unsigned int)(-1) >> 1) = 01111111 为最大整数
01111111 + 1 = 10000000 为最小整数
java语言:
未考虑 n=-n,当n为最小整数的情况,有待验证
1、C语言
最小整数在程序语言中不是-2^31,^是异或运算。
最小整数为((unsigned int)(-1) >> 1) + 1);
举例8位: -1=11111111
(unsigned int)(-1) >> 1) = 01111111 为最大整数
01111111 + 1 = 10000000 为最小整数
double myPow(double x, int n) { // if(n < 0)下面的两个判断可用n+1简化 // return 1.0/myPow(x, -(n+1))/x; if(n == (((unsigned int)(-1) >> 1) + 1)) return 1.0/(myPow(x, -n-1)/x); if(n < 0) return 1.0/myPow(x, -n); if(n == 0) return 1; if(n == 1) return x; if(n%2==0){ double temp = myPow(x, n/2); return temp * temp; }else{ double temp = myPow(x,(n-1)/2); return temp*temp*x; } }
java语言:
未考虑 n=-n,当n为最小整数的情况,有待验证
public double myPow(double x, int n) { if(n == 0) return 1; if(n<0){ n = -n; x = 1/x; } return (n%2 == 0) ? myPow(x*x, n/2) : x*myPow(x*x, n/2); }
相关文章推荐
- eclipse web module版本问题:Cannot change version of project facet Dynamic Web Module to 2.5.
- C++ 通过友元函数对类进行iostream流重载
- 九、Null在Java中的精确表示
- C++/C中的预处理命令;
- Spring4 mvc 基础教程~非常适合新手
- 八、Java的可变参数例子
- C++ 面试题
- 七、如何在Java中高效检查一个数组是否含有一个值
- java多线程总结
- Lock与synchronized 的区别
- 朴素贝叶斯
- Android使用eclipse开发导入源码包相关问题
- java SE基础(文件和流)
- Windows下Eclipse导入android系统源码
- JAVA线程生命周期
- springmvc学习笔记(16)-异常处理器
- springmvc学习笔记(15)-数据回显
- 《你必须知道的495个C语言问题》读书笔记之第4-7章:指针
- 12 个有效的提高编程技能的方法
- 基于Google Code Prettify wordpress插件WP-code-button