亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:3日期:2023-12-06 16:11:34
目錄BigInteger里的mod和remainder區(qū)別mod是模運算,remainder是求余運算BigInteger類的一些使用心得下面總結(jié)一下以后方便找1.給大數(shù)賦值2.把int型轉(zhuǎn)化為string型3.把兩個字符串拼接BigInteger里的mod和remainder區(qū)別

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

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

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

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

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

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

我們來從java的BigInteger源碼來看看實現(xiàn),當b小于等于0時會出現(xiàn)什么情況,假設(shè)這里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,結(jié)果是-2

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

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

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

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

7 ÷ -3 = -2 ··· 1

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

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

如果被除數(shù)是0,不管是取模還是取余結(jié)果都是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ù)的方法。

下面總結(jié)一下以后方便找1.給大數(shù)賦值

BigInteger p = new BigInteger('10669721913248017310');

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

BigInteger cx= new BigInteger('' + X3) ; 2.把int型轉(zhuǎn)化為string型

int j=123;String X1=String.valueOf(j);3.把兩個字符串拼接

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

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

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产免费一区二区三区免费视频 | 亚洲精品一区二区三区福利 | 亚洲在线小视频 | 色视频一区二区三区 | 被老外玩爽的中国美女视频 | 国产三级日本三级在线播放 | 国产一区二区精品久久凹凸 | 免费视频日本 | 国产成人精品久久一区二区小说 | 视频精品一区 | 日本卡一卡2卡3卡4精品卡无人区 | 韩国毛片在线 | 久草在线免费色站 | a欧美在线| 亚洲精品成人av在线 | 国产成人精品在视频 | 中文字幕亚洲天堂 | 国产成人精视频在线观看免费 | 亚洲国产欧美在线人成aaa | 国产成人精品高清在线 | 国产精品视频第一区二区三区 | 国产区一区 | a毛片免费观看完整 | 日韩二区三区 | 国产精品亚洲片在线va | 国产91精品一区二区麻豆亚洲 | 欧美成人午夜毛片免费影院 | 亚洲欧美精品网站在线观看 | 国产成人精品免费午夜 | 日本欧美一区二区三区高清 | 久久精品国产免费观看99 | 精品久久久久久中文字幕网 | 天天都色 | 亚洲综合片 | 国产三级日产三级韩国三级 | 久草视频福利资源站 | 欧美一级欧美一级毛片 | 日韩一级片播放 | 99久久亚洲综合精品网站 | 欧美亚洲另类视频 | 欧美成人精品高清在线播放 |