一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 關于Java大整數運算之BigInteger類

關于Java大整數運算之BigInteger類

2023-05-09 01:02未知服務器之家 Java教程

目錄 一、BigInteger類簡單介紹 二、BigInteger構造方式 (1)構造方式 (2)輸入方式 三、BigInteger常見的成員方法 (1)方法介紹 (2)方法使用演示 1.加減乘除余 2.比較 3.絕對值和冪 4.轉換成對應進制字符串 四、BigInteger不常見的成員

目錄
  • 一、BigInteger類簡單介紹
  • 二、BigInteger構造方式
    • (1)構造方式
    • (2)輸入方式
  • 三、BigInteger常見的成員方法
    • (1)方法介紹
    • (2)方法使用演示
      • 1.加減乘除余
      • 2.比較
      • 3.絕對值和冪
      • 4.轉換成對應進制字符串
  • 四、BigInteger不常見的成員方法

    一、BigInteger類簡單介紹

    我們都知道Integer的存儲范圍是-2^31~2^31-1(-2147483648~2147483647),當我們要存儲比Integer更大的數字時,java中就為我們提供了一個BigInteger類,方便我們去處理更大的數。

    BigInteger 類支持任意精度的整數,也就是說在運算中 BigInteger 類可以準確地表示任何大小的整數值。首先除了基本的操作加、減、乘、除,在該類中還封裝了其他很有用的操作,接下來將一一介紹。

    二、BigInteger構造方式

    (1)構造方式

    很顯然,BigInteger是一個封裝類,就跟String類是一樣的。使用時需要導入import java.math.BigInteger;使用 BigInteger 類,首先要創建一個 BigInteger 對象。BigInteger是一個有參構造,需要傳入一個參數,最常見的就是給定一個字符串,使用構造方法public BigInteger(String val)構造一個十進制的BigInteger對象。

    小貼士:該構造方法可以發生NumberFormatException異常,當字符串參數val中如果含有非數字字符就會發生該異常。

    import java.math.BigInteger;
    /*
     * BigInteger演示
     */
    public class Test {
    	public static void main(String[] args) {
    		BigInteger bigInteger=new BigInteger("1123");
    	}
    }

    (2)輸入方式

    普通輸入:

    Scanner sc=new Scanner(System.in);
    BigInteger a=sc.BigIntegerNext();

    循環輸入 :

     while (sc.hasNextBigInteger()) { // 注意 while 處理多個 case
    }

    除了定義實例,我們也可以像使用String類那樣使用BigInteger類,給大家一個題目感受一下,該題就是本文開頭所提及的三角形求解。

    import java.math.BigInteger;
    import java.util.Arrays;
    import java.util.Scanner;
    /*
     * 三角形
     */
    public class Triangle {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		 while (sc.hasNextBigInteger()) { // 注意 while 處理多個 case
    	            BigInteger []triangle=new BigInteger[3];
    	            for(int i=0;i<3;i++) {
    	            	triangle[i]=sc.nextBigInteger();
    	            }
    	            Arrays.sort(triangle);
    	            if(triangle[0].add(triangle[1]).compareTo(triangle[2])>0) {
    	            	System.out.println("Yes");
    	            }else {
    	            	System.out.println("No");
    	            }
    	        }
    	}
    }

    三、BigInteger常見的成員方法

    (1)方法介紹

    方法名 含義
    public BigInteger add(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的和。
    public BigInteger subtract(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的差。
    public BigInteger multiply(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的積。
    public BigInteger divide(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的商。
    public BigInteger remainder(BigInteger val) 返回當前大整數對象與參數指定的大整數對象的余。
    public int compareTo(BigInteger val) 返回當前大整數對象與參數指定的大整數的比較結果, 返回值是1、-1或0,分別表示當前 大整數對象大于、小于或等于參數指定的大整數。
    public BigInteger abs() 返回當前大整數對象的絕對值。
    public BigInteger pow(int a) 返回當前大整數對象的a次冪。
    public String toString() 返回當前大整數對象十進制的字符串表示。
    public String toString(int p) 返回當前大數對象p進制的字符串表示。

    (2)方法使用演示

    1.加減乘除余

    import java.math.BigInteger;
    import java.util.Scanner;
    /*
     * BigInteger演示
     */
    public class Test {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		BigInteger a=sc.nextBigInteger();
    		BigInteger b=sc.nextBigInteger();
    		System.out.println(a.add(b));//加
    		System.out.println(a.subtract(b));//減
    		System.out.println(a.multiply(b));//乘
    		System.out.println(a.divide(b));//除
    		System.out.println(a.remainder(b));//余	
    	}
    }

    看結果對于超大數字,也是完美計算結果的。

    關于Java大整數運算之BigInteger類

    a>b返回結果為1。

    關于Java大整數運算之BigInteger類

    關于Java大整數運算之BigInteger類

    關于Java大整數運算之BigInteger類 方法名 含義 public BigInteger shiftLeft?(int n) 左移一個比特位,*2 public BigInteger shiftRight?(int n) 右移一個比特位,/2 public BigInteger and?(BigInteger val) &和 public BigInteger or?(BigInteger val) |或 public BigInteger xor?(BigInteger val) ^異或 public BigInteger not() ~取反 public BigInteger andNot?(BigInteger val) &~ 先取和再取反 public boolean testBit?(int n) 從0開始,第n位如果是1,則返回true,否則位false ,必須是正數 public BigInteger setBit?(int n) 將第n 位置1 public BigInteger clearBit?(int n) 將第n 位置0 public BigInteger flipBit?(int n) 如果第n為原來是1,則置0;如果第n為原來是0,則置1; public int getLowestSetBit()? 尋找到第一個不為零數的 0的個數。如7->0111,則是4 public int bitLength() 返回位長,不包含符號位。如7->0111,則是3 public int bitCount() 補碼表中和符號位不同的個數。如7->0111,則是3 原文地址:https://blog.csdn.net/m0_63372226/article/details/129967348

    延伸 · 閱讀

    精彩推薦
    主站蜘蛛池模板: yellow字幕网在线zmzz91 | 国产激情久久久久影院小草 | 国产一级持黄大片99久久 | 2020年精品国产午夜福利在线 | 久见久热 这里只有精品 | 奇米狠狠色 | 星空无限传媒xk8027穆娜 | 双性人bbww欧美双性 | 99re5在线精品视频热线 | 韩剧在线观看 | 国产精品一二三 | 国产亚洲精品精品国产亚洲综合 | chinese男男gayxxx chinese老头和老太交hd | 热辣小秘书办公室 | 特黄级| 国产精品亚洲专区在线播放 | 国色天香社区视频免费高清在线观看 | 69日本xxxx| 欧美猛男同志同性video | 日本一区二区三区国产 | 免费视屏 | 第一次破学生处破 | 成人免费视屏 | 国产在线视频福利 | 免费黄色网站视频 | 99精品在线视频观看 | 菠萝视频5正版在线观看 | 亚洲色图影院 | 亚洲国产天堂综合一区 | 波多野结衣护士 | 九九久久国产精品大片 | 国人精品视频在线观看 | 能免费观看的韩剧 | 免费午夜剧场 | 香蕉国产成版人视频在线观看 | 91夜夜人人揉人人捏人人添 | 亚洲第一免费播放区 | 国产成人影院一区二区 | 色哟哟在线资源 | 好男人免费高清在线观看2019 | 99精品久久久久久 |