BigInteger

平时在存储整数的时候,Java中默认是int类型,int类型有取值范围:-2147483648 ~ 2147483647。如果数字过大,我们可以使用long类型,但是如果long类型也表示不下怎么办呢?

​ 就需要用到BigInteger,可以理解为:大的整数。

​ 有多大呢?理论上最大到42亿的21亿次方

​ 基本上在内存撑爆之前,都无法达到这个上限。

以下是 BigInteger 的一些关键特点和用法:

1. 创建 BigInteger 对象

BigInteger 提供多种创建对象的方式:

  • 通过字符串构造:

  • BigInteger bigInt = new BigInteger("123456789012345678901234567890");
    

    通过基本数据类型构造:

  • BigInteger bigInt = BigInteger.valueOf(1234567890L);
    
    

    基本算术运算

    BigInteger 提供了丰富的算术运算方法,例如加法、减法、乘法、除法等:

  • 加法

BigInteger a = new BigInteger("123");
BigInteger b = new BigInteger("456");
BigInteger result = a.add(b);  // result: 579

   减法:

BigInteger result = a.subtract(b);

乘法:

BigInteger result = a.multiply(b);

除法:

BigInteger result = a.divide(b);

取余:

BigInteger result = a.remainder(b);

3. 比较操作

BigInteger 提供了比较方法:

  • compareTo 方法:

int comparison = a.compareTo(b);  // returns -1, 0, or 1

4. 位操作

BigInteger 也支持位操作,如与、或、异或、非等:

与操作:

BigInteger result = a.and(b);

或操作:

BigInteger result = a.or(b);

异或操作:

BigInteger result = a.xor(b);

非操作:

BigInteger result = a.not();

5. 其他常用方法

  • 求幂:

  • BigInteger result = a.pow(2);  // a 的平方
    

    最大公约数:

  • BigInteger gcd = a.gcd(b);
    

是否为质数:

boolean isPrime = a.isProbablePrime(1);  // 参数表示检验的准确性

使用场景

BigInteger 适用于需要处理超出基本数据类型范围的大整数运算的场景,如密码学、大数计算、金融计算等。它的使用确保了计算的准确性和范围的扩展。

以下是一个综合示例,展示了如何使用 BigInteger 进行各种操作

import java.math.BigInteger;

public class BigIntegerExample {
    public static void main(String[] args) {
        BigInteger a = new BigInteger("12345678901234567890");
        BigInteger b = new BigInteger("98765432109876543210");

        // 算术运算
        BigInteger sum = a.add(b);
        BigInteger difference = a.subtract(b);
        BigInteger product = a.multiply(b);
        BigInteger quotient = a.divide(b);
        BigInteger remainder = a.remainder(b);

        // 比较
        int comparison = a.compareTo(b);

        // 位操作
        BigInteger andResult = a.and(b);
        BigInteger orResult = a.or(b);
        BigInteger xorResult = a.xor(b);
        BigInteger notResult = a.not();

        // 其他方法
        BigInteger powResult = a.pow(2);
        BigInteger gcdResult = a.gcd(b);
        boolean isPrime = a.isProbablePrime(1);

        // 转换
        String strValue = a.toString();
        int intValue = a.intValue();
        long longValue = a.longValue();

        System.out.println("Sum: " + sum);
        System.out.println("Difference: " + difference);
        System.out.println("Product: " + product);
        System.out.println("Quotient: " + quotient);
        System.out.println("Remainder: " + remainder);
        System.out.println("Comparison: " + comparison);
        System.out.println("AND result: " + andResult);
        System.out.println("OR result: " + orResult);
        System.out.println("XOR result: " + xorResult);
        System.out.println("NOT result: " + notResult);
        System.out.println("Power result: " + powResult);
        System.out.println("GCD result: " + gcdResult);
        System.out.println("Is prime: " + isPrime);
        System.out.println("String value: " + strValue);
        System.out.println("Int value: " + intValue);
        System.out.println("Long value: " + longValue);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值