欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

聊聊Java BigInteger里面的mod和remainder的區(qū)別

 更新時間:2021年08月13日 15:23:00   作者:磚業(yè)洋__  
這篇文章主要介紹了聊聊Java BigInteger里面的mod和remainder的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

BigInteger里的mod和remainder區(qū)別

下面直接上圖吧,稍后解釋關于mod和remainder以及負數(shù)求余求模的區(qū)別。

mod是模運算,remainder是求余運算

如果被除數(shù)是正整數(shù),mod和remainder的結果沒區(qū)別。mod運算除數(shù)只能為正數(shù)。

取模運算(“Modulo Operation”)和取余運算(“Complementation ”)兩個概念有重疊的部分但又不完全一致。主要的區(qū)別在于對負整數(shù)進行除法運算時操作不同。取模主要是用于計算機術語中。取余則更多是數(shù)學概念。

假設有式子a ÷ b = c ··· r

當a和b符號一致時的情況:a,b均大于0時,求模運算和求余運算所得的c的值一致,r >= 0。a,b均小于0時,只能進行求余運算,因為求模運算除數(shù)b必須為正,r也是大于等于0。

當a和b符號不一致時,c不一樣,r也不一樣。

  • 求余運算結果,r不為0時, r 的符號和a一致。即余數(shù)符號和被除數(shù)符號必須相同。
  • 求模運算結果,r不為0時,r 的符號和b一致,而因為求模運算時,b必須大于0,所以r一定大于等于0,即模運算的結果一定是非負數(shù)。

我們來從java的BigInteger源碼來看看實現(xiàn),當b小于等于0時會出現(xiàn)什么情況,假設這里r = a.mod(b),那么b必須為正數(shù),否則報異常

Exception in thread "main" java.lang.ArithmeticException: BigInteger: modulus not positive

來看mod源碼:

    public BigInteger mod(BigInteger m) {
        // signum是此BigInteger的符號:-1表示負數(shù),0表示零,或1表示正數(shù)。
        // 請注意,BigInteger零必須具有0的符號。這對于確保每個BigInteger值只有一個表示是必要的。
        if (m.signum <= 0)
            throw new ArithmeticException("BigInteger: modulus not positive");
 
        BigInteger result = this.remainder(m);
        return (result.signum >= 0 ? result : result.add(m));
        // 可以看出mod和remainder的區(qū)別就在于,mod的模必須為正,否則異常,并且取余的值小于0點話還要加上模數(shù)m
    }

比如 -14 ÷ 3 = -4 ··· -2(余數(shù)符號和被除數(shù)符號必須相同

余數(shù)就是-2,這里如果是remainder取余運算,-14 remainder 3 = -2,結果是-2

如果是mod模運算,在remainder基礎上判斷正負,這里-2是負數(shù),加上模數(shù)(可認為是除法的除數(shù)),這里加上3,mod模運算結果就是1,-14 mod 3 = 1

-10 ÷ 3 = -3 ··· -1

余數(shù)就是-1,這里如果是remainder取余運算,-10 remainder 3 = -1,結果是-1

如果是mod模運算,在remainder基礎上判斷正負,這里-1是負數(shù),加上模數(shù)(可認為是除法的除數(shù)),這里加上3,mod模運算結果就是2,-10 mod 3 = 2

7 ÷ -3 = -2 ··· 1

余數(shù)是1,除數(shù)是負數(shù),這里只能取模運算remiander 7 remainder -3 = 1,結果是1。但是這里余數(shù)居然大于除數(shù)了!?。?!

所以可以這么說,我們小學所學的余數(shù)一定小于除數(shù)這個結論是針對除數(shù)為正數(shù)而言。并且由前兩個例子也可以看出,取模運算的值也一定小于除數(shù),前提條件是除數(shù)為正才能取模。

如果被除數(shù)是0,不管是取模還是取余結果都是0。

0%-5=0

0mod3=0

0remainder-3=0

......

如果不是大整數(shù),只是普通的int型,比如System.out.println(5 % -3);

打印出來是2

所以java中,%是求余運算,而不是取模運算。

另外各個環(huán)境下%運算符的含義不同,比如c/c++,java 為取余,而python則為取模。

BigInteger類的一些使用心得

這幾天做信息安全作業(yè)的rsa算法,用到了很多大數(shù)的方法。

下面總結一下以后方便找

1.給大數(shù)賦值

BigInteger p = new BigInteger("10669721913248017310");

或者,X3是string或者int都行。

BigInteger cx= new BigInteger("" + X3) ;  

2.把int型轉化為string型

int j=123;
String X1=String.valueOf(j);

3.把兩個字符串拼接

String X1=1234;
String X2=1545;
String X3=X2+X1;

之后有的話繼續(xù)更新。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • JavaMail實現(xiàn)郵件發(fā)送機制

    JavaMail實現(xiàn)郵件發(fā)送機制

    這篇文章主要為大家詳細介紹了JavaMail實現(xiàn)郵件發(fā)送機制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Ajax實現(xiàn)省市區(qū)三級聯(lián)動

    Ajax實現(xiàn)省市區(qū)三級聯(lián)動

    這篇文章主要為大家詳細介紹了jQuery ajax實現(xiàn)省市縣三級聯(lián)動的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能幫助到你
    2021-07-07
  • 在Spring Boot中集成RabbitMQ詳細步驟(最新推薦)

    在Spring Boot中集成RabbitMQ詳細步驟(最新推薦)

    本文將介紹如何在Spring Boot項目中集成RabbitMQ,實現(xiàn)生產(chǎn)者和消費者的基本配置,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • Java中時間API的基本使用教程

    Java中時間API的基本使用教程

    這篇文章主要介紹了Java中時間API的基本使用教程,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Java中的CompletableFuture基本用法

    Java中的CompletableFuture基本用法

    這篇文章主要介紹了Java中的CompletableFuture基本用法,CompletableFuture是java.util.concurrent庫在java 8中新增的主要工具,同傳統(tǒng)的Future相比,其支持流式計算、函數(shù)式編程、完成通知、自定義異常處理等很多新的特性,需要的朋友可以參考下
    2024-01-01
  • java實現(xiàn)單源最短路徑

    java實現(xiàn)單源最短路徑

    這篇文章主要為大家詳細介紹了java實現(xiàn)單源最短路徑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • java中Servlet Cookie取不到值原因解決辦法

    java中Servlet Cookie取不到值原因解決辦法

    這篇文章主要介紹了java中Servlet Cookie取不到值原因解決辦法的相關資料,需要的朋友可以參考下
    2017-06-06
  • 學習java多線程

    學習java多線程

    本文運用了大量的代碼講解了java多線程,它可以提高程序并行執(zhí)行的速度,更快的響應程序。感興趣的小伙伴一起來看看吧
    2021-08-08
  • 如何測試Java類的線程安全性

    如何測試Java類的線程安全性

    這篇文章主要介紹了如何測試Java類的線程安全性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Minio與SpringBoot使用okhttp3問題解決

    Minio與SpringBoot使用okhttp3問題解決

    這篇文章主要介紹了Minio與SpringBoot使用okhttp3問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論