大数的计算
来源:互联网 发布:t20天正建筑软件 编辑:程序博客网 时间:2024/05/18 00:00
最近由于系统的要求,需要做一个辅助的功能大数的十进制、十六进制的计算,在网上找到很多资料都不是很全面,所以我在此记录一下大数的计算器的后台的代码。
/**
* 十进制的加、减、乘、除、mod、求逆的运算
* */
public class BigIntegerDemo {
/**
* 加法
* */
public static BigInteger add(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
return b1.add(b2);
}
/**
* 减法
* */
public static BigInteger sub(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
return b1.subtract(b2);
}
/**
* 乘法
* */
public static BigInteger mul(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
return b1.multiply(b2);
}
/**
* 除法
* */
public static BigInteger div(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
return b1.divide(b2);
}
/**
* 取模
* */
public static BigInteger mod(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
return b1.mod(b2);
}
/**
* 求逆
* */
public static BigInteger inverse(String value1,String value2){
BigInteger b1=new BigInteger(value1);
BigInteger b2=new BigInteger(value2);
BigInteger modInverseValue;
try {
modInverseValue=b1.modInverse(b2);
} catch (Exception e) {
//当不能求逆的时候返回的值为0
modInverseValue=new BigInteger("0");
}
return modInverseValue;
}
}
/**
* 十六进制的加、减、乘、除、mod、求逆的运算
* */
public class HexBigInteger {
/**
* 加法
* */
public static String add(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger addValue= BigIntegerDemo.add(b1.toString(10), b2.toString(10));
return addValue.toString(16);
}
/**
* 减法
* */
public static String sub(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger subValue= BigIntegerDemo.sub(b1.toString(10), b2.toString(10));
return subValue.toString(16);
}
/**
* 乘法
* */
public static String mul(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger mulValue= BigIntegerDemo.mul(b1.toString(10), b2.toString(10));
return mulValue.toString(16);
}
/**
* 除法
* */
public static String div(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger divValue= BigIntegerDemo.div(b1.toString(10), b2.toString(10));
return divValue.toString(16);
}
/**
* 取模
* */
public static String mod(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger modValue= BigIntegerDemo.mod(b1.toString(10), b2.toString(10));
return modValue.toString(16);
}
/**
* 求逆
* */
public static String inverse(String value1,String value2){
BigInteger b1=new BigInteger(value1,16);
BigInteger b2=new BigInteger(value2,16);
BigInteger inverseValue= BigIntegerDemo.inverse(b1.toString(10), b2.toString(10));
return inverseValue.toString(16);
}
public static void main(String[] args) {
// System.out.println("加法="+add("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
// System.out.println("减法="+sub("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
// System.out.println("成法="+mul("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
// System.out.println("除法="+div("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
// System.out.println("mod="+mod("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
// System.out.println("求逆="+inverse("abababaababaabababaccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","dfaaaaaabbbbbbbb13542353425634634635656"));
BigInteger b1=new BigInteger("147429890135226316801");
BigInteger b2=new BigInteger("14736494398871999483");
BigInteger b3=b1.multiply(b2);
BigInteger b4=new BigInteger("2");
System.out.println(b3.multiply(b4));
}
}
- 大数间的乘法计算--大数计算
- 大数的计算
- 大数N!的计算
- 计算大数的阶乘
- 大数阶乘的计算(五)
- 大数阶乘的计算(六)
- 大数阶乘的计算(五)
- 大数阶乘的计算(六)
- 计算大数的阶乘(ZZ)
- 实现大数幂的计算
- c编写的大数计算
- 大数乘法的计算原理
- 大数计算
- 大数计算
- 大数计算
- 大数计算
- 大数计算
- 大数计算
- Eclipse 的一些调试技巧
- linux:TeamViewer安装使用详解
- linux常用disk磁盘操作命令
- HDU 4558 剑侠情缘
- ubuntu 登录失败
- 大数的计算
- 在hibernate junit测试时出现sf.close的错误的原因
- 嵌入式linux内核的五个子系统
- cocos2d-x 菜鸟学习笔记七(界面控件之scrollView与tableView)
- python2 lambda内赋值打印方法
- SQLServer 2005 jsp 连接 问题
- Linux c 文件操作杂笔
- linux-----------------daemon()函数的使用
- 心愿箱