精华内容
下载资源
问答
  • BigInteger.js

    2019-11-01 14:44:14
    JavaScript支持大整数,页面需要进入BigInteger.js。才能使用
  • 大数运算的BigInteger类型(整数类)的一些运算关键词相关说明源码运行结果 关键词 import java.math.BigInteger; BigInteger big_number_0=new BigInteger(“A”); A为大数的值,可以是Integer类范围内或外的数。 ...
  • BigInteger不是基本数据类型之一,它其实更像String,是Java里的一个类,然而它的初始化方式却没有String那么方便可以直接赋值,而是跟其他自定义的类一样,要调用它的构造器进行初始化。
  • var BigInteger = require('node-biginteger'); var n = BigInteger.fromString('abc', 16); n.toString(16); 类方法:BigInteger.fromLong(val) 瓦尔朗 返回:BigInteger 类方法:BigInteger.fromString(val...
  • BigInteger、BigDecimal 和 BigRational 这些是多精度BigInteger 、 BigDecimal和BigRational类型的实现,从头开始构建。 大整数 BigInteger是一个多精度整数。 它的大小仅受可用内存的限制。 BigInteger是为易用性...
  • biginteger.js 是一个实现任意大小整数的 javascript 库。 方法可用于: 添加 减法 乘法 分配 模数 取幂 模幂运算 随机数 素性检查 此外,还有许多其他方法可用于相等性测试、基数之间的转换、查找最大值和最小值...
  • javascript-biginteger 使用范例 在Node.js中 const BigInteger = require('./path/to/biginteger').BigInteger; var a = BigInteger('123456789'); var b = BigInteger('10000000000'); var c = BigInteger('...
  • 大整数 C ++实现BigInteger
  • BigInteger

    2020-11-07 20:12:08
    BigInteger 在java中,由CPU原生提供的整型最大范围是64位long型整数。使用long型整数可以直接通过CPU整数进行计算,速度非常快。 如果我们使用的整数范围超过了long型怎么办?这个时候,就只能用软件来模拟一个大...

    BigInteger

    在java中,由CPU原生提供的整型最大范围是64位long型整数。使用long型整数可以直接通过CPU整数进行计算,速度非常快。
    如果我们使用的整数范围超过了long型怎么办?这个时候,就只能用软件来模拟一个大整数。java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个int[]数组来模拟一个非常大的整数:

    BigInteger bi = new BigInteger("1234567890");
    System.out.println(bi.pow(5));   //2867971860299718107233761438093672048294900000
    

    BigInteger做运算的时候,只能使用实例方法,例如,加法运算

    BigInteger i1 = new BigInteger("1234567890");
    BigInteger i2 = new BigInteger("12345678901234567890");
    BigInteger sum = i1.add(i2); //12345678902469135780
    

    long型整数运算比,BigInteger不会有范围限制,但缺点是速度比较慢。
    也可以把BigInteger转换为long型:

    BigInteger i = new BigInteger("123456789000");
    System.out.println(i.longValue()); // 123456789000
    System.out.println(i.multiply(i).longValueExact()); // java.lang.ArithmeticException: BigInteger out of long range
    

    使用longValueExact()方法时,如果超出了long型的范围,会抛出ArithmeticException

    BigIntegerIntegerLong一样,也是不可变类,并且也继承自Number类。因为Number定义了转换为基本类型的几个方法:

    • 转换为bytebyteValue()
    • 转换为shortshortValue()
    • 转换为intintValue()
    • 转换为longlongValue()
    • 转换为floatfloatValue()
    • 转换为doubledoubleValue()
      因此,通过上述方法,可以把BigInteger转换成基本类型。如果BigInteger表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。如果需要准确地转换成基本类型,可以使用intValueExact()longValueExact()等方法,在转换时如果超出范围,将直接抛出ArithmeticException异常。

    如果BigInteger的值甚至超过了float的最大范围(3.4x1038),那么返回的float是什么呢?

    // BigInteger to float
    import java.math.BigInteger;
    public class Main {
        public static void main(String[] args) {
            BigInteger n = new BigInteger("999999").pow(99);
            float f = n.floatValue();
            System.out.println(f);
        }
    }
    

    运行结果
    在这里插入图片描述
    总结:

    1. BigInteger 用于表示任意大小的整数;
    2. BigInteger是不变类,并且继承自Number
    3. BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。
    展开全文
  • biginteger源码ASN.1 数据类型 用来自规范的信息来扩充 Java 类的 Java 注释。 这些注释以后可以被像 . 目录: 地位 数据类型足以处理 . 目前还没有编译器,因此必须手动创建和添加 Java 类和注释。 支持的 ASN.1 ...
  • biginteger源码用于 JavaScript 的 BigDecimal BigDecimal for Javascript是不可变、任意精度、有符号十进制数的纯 Javascript 实现。 BigDecimal 支持任意精度的十进制数学。 在有限的时间内,我们将免费提供...
  • BigInteger在Java8里增加了一组方法: public byte byteValueExact() public int intValueExact() public long longValueExact()  这些方法后面都有Exact(),在老的JDK版本中,已经有了byteValue,intValue,...
  • /* * 大数运算 * BigInteger * 求91的92次方 * 求它除以100的余数 * 大数运算Biginteger类的方法调用 */ package com.test1; import java.math;... public class test100 { /* * @param args */ static BigInteger
  • BigInteger_src.zip

    2020-04-26 15:59:45
    网上c#生成rsa公钥和私钥并进行加解密的示例很多,但里面都是要用到BigInteger类,而这个类却没有下载地址,找了很久才找到,在这里分享给大家
  • 主要介绍了Java BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类用法,结合实例形式详细分析了Java使用BigInteger类,BigDecimal类,Date类,DateFormat类及Calendar类进行数值运算与日期运算相关操作...
  • 在Java中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。其中,BigInteger 类是针对大整数的处理类,这里有Integer 类的解释,使用方法和实例,需要的朋友可以参考下。
  • 本篇文章是对C# 4.0 大数的运算 BigInteger的应用进行了详细的分析介绍,需要的朋友参考下
  • bigint.ts Tom Wu的BigInteger.js TypeScript包装器
  • BigInteger使用简介

    2020-05-05 09:12:36
    对于Java来说,有4种常用的表示整数的数据类型,分别为:byte、short、int和long,...为了解决这个问题,于是便有了BigInteger类。 对于BigInteger类来说,有如下的常用的构造器: public BigInteger(String ...

    对于Java来说,有4种常用的表示整数的数据类型,分别为:byte、short、int和long,它们分别占1个字节、2个字节、4个字节和8个字节。也就是说,最大可表示的整数范围是2的64次方。如果想表示更大的数字,则会出现问题。为了解决这个问题,于是便有了BigInteger类。

    对于BigInteger类来说,有如下的常用的构造器:

    1. public BigInteger(String val):传入字符串,默认使用十进制
    2. public BigInteger(String val, int radix):字符串和数字进制(例如二进制为2,八进制为8, 十进制为10等)

    当然,BigInteger还有很多的构造器,一是不常用到,二嘛我也没琢磨明白怎么用,就不在这里班门弄斧了。

    关于构造器的示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            String str = "121";
            System.out.println("\"121\"的的十进制的值为:" + new BigInteger(str));
            System.out.println("\"121\"的的八进制的值为:" + new BigInteger(str, 8));
        }
    }

    执行结果如下图所示:

    需要强调一点的是,字符串的中的所有字符必须为数字,且必须在指定的进制表示范围之内,否则会抛异常。

    接下来就简单说一说BigInteger的一些常用方法。

    • 常用的静态方法
    1. public static BigInteger valueOf(long val):该方法是将一个long类型的数字转换为BigInteger对象
    2. public static BigInteger probablePrime(int bitLength, Random rnd):获取指定位数的素数。需要注意的是,这里的位数是指转换为二进制之后的位数。

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b = BigInteger.valueOf(12);
            System.out.println("b的值为:" + b);
    
            for (int i = 0; i < 5; i++) {
                System.out.println("第" + (i + 1) + "次获取的素数为:" + BigInteger.probablePrime(5, new Random()));
            }
        }
    }

    执行结果如下图所示:

    • 算术运算
    1. public BigInteger add(BigInteger val):返回和另一个BigInteger对象相加的和
    2. public BigInteger subtract(BigInteger val):返回和另一个BigInteger对象相减的差
    3. public BigInteger multiply(BigInteger val):返回和另一个BigInteger对象相乘的积。
    4. public BigInteger divide(BigInteger val):返回和另一个BigInteger对象相除的值
    5. public BigInteger remainder(BigInteger val):返回和另一个BigInteger对象求余的值。
    6. public BigInteger mod(BigInteger m):返回和另一个BigInteger对象求模的值。
    7. public BigInteger[] divideAndRemainder(BigInteger val):返回一个BigInteger数组对象,其值为整除的值和摸。

    这里需要说明的是,求模和求余在某些情况下是一样的。求余指的是数学概念,而求模指计算机概念。对于求模来说,要求除数不能为负数,且求模所得值也不会是负数。而求余则无此限制。

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b1 = BigInteger.valueOf(12);
            BigInteger b2 = BigInteger.valueOf(5);
            // 加
            System.out.println("b1和b2的和为:" + b1.add(b2));
            // 减
            System.out.println("b1和b2的差为:" + b1.subtract(b2));
            // 乘
            System.out.println("b1和b2的积为:" + b1.multiply(b2));
            // 除
            System.out.println("b1和b2的商为:" + b1.divide(b2));
            // 求余
            System.out.println("b1和b2求余为:" + b1.remainder(b2));
            // 求商和余数
            System.out.println("b1和b2的商和余数为:" + Arrays.toString(b1.divideAndRemainder(b2)));
    
            // 求模和求余数的区别
            BigInteger b3 = BigInteger.valueOf(-12);
            System.out.println("b3和b2的求余为:" + b3.remainder(b2));
            System.out.println("b3和b2的求模为:" + b3.mod(b2));
        }
    }

    执行结果如下图所示:

    • 位运算
    1. public BigInteger and(BigInteger val):和另一个对象进行且运算
    2. public BigInteger or(BigInteger val) :和另一个对象进行或运算
    3. public BigInteger not() :进行取反运算
    4. public BigInteger andNot(BigInteger val):先对传入的对象取反后再进行且运算。
    5. public BigInteger shiftLeft(int n):向左移动n位(二进制表示的时候)
    6. public BigInteger shiftRight(int n):向右移动n位(二进制表示的时候)。

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b1 = BigInteger.valueOf(4);
            BigInteger b2 = BigInteger.valueOf(5);
    
            // 且运算
            System.out.println("4 & 5结果为:" + (4 & 5));
            System.out.println("b1和b2且的结果为:" + b1.and(b2));
    
            // 或运算
            System.out.println("4 | 5结果为:" + (4 | 5));
            System.out.println("b1和b2或的结果为:" + b1.or(b2));
    
            // 非运算
            System.out.println("~4结果为:" + (~4));
            System.out.println("b1非运算的结果为:" + b1.not());
    
            // 且非运算
            System.out.println("4 & ~5结果为:" + (4 & ~5));
            System.out.println("b1和非b2且的结果为:" + b1.andNot(b2));
    
            // 左移运算
            System.out.println("4左移两位结果为:" + (4 << 2));
            System.out.println("b1左移两位结果为:" + b1.shiftLeft(2));
            
            // 右移运算
            System.out.println("4右移两位结果为:" + (4 >> 2));
            System.out.println("b1右移两位结果为:" + b1.shiftRight(2));
        }
    }
    

    执行结果如下图所示:

    • 取最大或最小值
    1. public BigInteger max(BigInteger val):判断该对象是否比另一个对象大。
    2. public BigInteger min(BigInteger val) :判断该对象是否比另一个对象小

     

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b1 = BigInteger.valueOf(4);
            BigInteger b2 = BigInteger.valueOf(5);
    
            System.out.println("b1和b2中最大的值为::" + b1.max(b2));
            System.out.println("b1和b2中最小的值为::" + b1.min(b2));
        }
    }

    执行结果如下图所示:

    • 转换成指定的整数类型
    1. public byte byteValue():转换为byte类型
    2. public short shortValue():转换为short类型
    3. public int intValue():转换为int类型
    4. public long longValue() :转换为long类型

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b1 = BigInteger.valueOf(4);
            System.out.println("BigInteger转byte:" + b1.byteValue());
            System.out.println("BigInteger转short:" + b1.shortValue());
            System.out.println("BigInteger转int:" + b1.intValue());
            System.out.println("BigInteger转long:" + b1.longValue());
        }
    }
    

    执行结果如下图所示:

    • 其他
    1. public int bitCount():返回该对象转换为二进制数之后,1的个数。
    2. public int bitLength():返回该对象转换为二进数之后的所占位数。
    3. public BigInteger gcd(BigInteger val):求和另一个BigInteger对象的最大公约数
    4. public BigInteger abs() :返回该对象的绝对值
    5. public BigInteger pow(int exponent) :求该对象的幂运算
    6. public int signum():判断该对象的正负,1表示正,-1表示负。
    7. public BigInteger sqrt():求该对象的平方根。
    8. public BigInteger negate():将该值取反。若本身为正数,获取其对应的负数。若本身为负数,则获取其对应的正数。
    9. public BigInteger nextProbablePrime(): 获取紧邻该整数的一个素数。
      
    10. public int compareTo(BigInteger val)

    相关示例代码如下所示:

    public class BigIntegerTest {
    
        public static void main(String[] args) {
    
            BigInteger b1 = BigInteger.valueOf(12);
            BigInteger b2 = BigInteger.valueOf(15);
            // 求转换为二进制后1的个数
            System.out.println("b1(12)转换为二进制后1的个数为:" + b1.bitCount());
            // 求转换为二进制后所占位数
            System.out.println("b1(12)转换为二进制后所占位数为:" + b1.bitLength());
            // 求两个数的最大公约数
            System.out.println("b1(12)和b2(15)的最大公约数为:" + b1.gcd(b2));
            // 求一个数的绝对值
            System.out.println("-4的绝对值为:" + BigInteger.valueOf(-4).abs());
            // 求一个数的幂
            System.out.println("b1(12)的2次方的值为:" + b1.pow(2));
            // 求一个数的符号(1表示正,-1表示负)
            System.out.println("3的表示正负的符号为:" + BigInteger.valueOf(3).signum());
            System.out.println("-3的表示正负的符号为:" + BigInteger.valueOf(-3).signum());
            // 求一个数的平方根
            System.out.println("4的平方根为:" + BigInteger.valueOf(4).sqrt());
            // 对该数取反(正变负,负变正)
            System.out.println("4取反后结果为:" + BigInteger.valueOf(4).negate());
            // 取该数之后理其最近的素数
            System.out.println("4后面距离4最近的素数为:" + BigInteger.valueOf(4).nextProbablePrime());
            // 比较两个数的大小(1表示大,-1表示小)
            System.out.println("b1(12)是否比b2(15)大?" + b1.compareTo(b2));
        }
    }

    执行结果如下图所示:

    自此,关于BigInteger的简单使用就已经介绍完毕了。

    展开全文
  • 主要介绍了Java中两个大数之间的相关运算及BigInteger代码示例,通过biginteger类实现大数的运算代码,具有一定参考价值,需要的朋友可以了解下。
  • 前段时间,有个同事说...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,799
精华内容 20,719
关键字:

biginteger