溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何在C++項(xiàng)目中實(shí)現(xiàn)一個(gè)取余運(yùn)算

發(fā)布時(shí)間:2021-02-23 16:24:46 來(lái)源:億速云 閱讀:158 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

如何在C++項(xiàng)目中實(shí)現(xiàn)一個(gè)取余運(yùn)算?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

一、C++中的整數(shù)除法

C++中整數(shù)除法和取余用的是truncate除法(舍0取整),而給無(wú)符號(hào)類(lèi)型賦值超出表示范圍時(shí)候用無(wú)符號(hào)類(lèi)型等于賦值對(duì)無(wú)符號(hào)類(lèi)型可以表示的數(shù)值總數(shù)取余,智力的取余是基于floor除法的(向下取整)。
在整數(shù)除法中,Java/C 等語(yǔ)言用的是 truncate 除法,Python 用的是 floor 除法。

1、truncate 除法

向零取整。向 0 方向取最接近精確值的整數(shù),換言之就是舍去小數(shù)部分,因此又稱(chēng)截?cái)嗳≌═runcate)。可以這樣理解,先用浮點(diǎn)數(shù)除法進(jìn)行計(jì)算,計(jì)算結(jié)果直接舍去小數(shù)部分。
如:

5/-2=-2.5,所以整數(shù)除法中5/(-2)=-2
-5/2=-2.5,所以整數(shù)除法中-5/2=-2
-5/-2=2.5,所以整數(shù)除法中-5/-2=2
5/2=2.5,所以整數(shù)除法中5/2=0

2、C++中取余

有上述除法,我們已知a/b=c,而取余操作時(shí)a%b=d
那么d的求解方法如下:

d=a-(bc)
5%2=5-(22)=1
(-5)%(-2)=(-5)-((-2)2)=-1
5%(-2)=5-((-2)(-2))=1
(-5)%2=(-5)-(2*(-2))=-1

最后兩個(gè)式子尤其值得注意

3、floor 除法

理解起來(lái)就是向下取整

5/-2=-2.5,所以floor除法中5/(-2)=-3
-5/2=-2.5,所以floor除法中-5/2=-3
-5/-2=2.5,所以floor除法中-5/-2=2
5/2=2.5,所以floor除法中5/2=2

4、C++中無(wú)符號(hào)變量被賦值超出他表示范圍的情況

如我們給定unsigned char a;取值范圍為0-255共256個(gè)數(shù)值,則

a = 5 輸出為5 理解為 5-0256
a=257 輸出為1 理解為 257-1256
a=-5 輸出為251 理解為-5 - (-1256)
a=-257 輸出為255 理解為 -257 - (-2256)

看完上述內(nèi)容,你們掌握如何在C++項(xiàng)目中實(shí)現(xiàn)一個(gè)取余運(yùn)算的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI