對C、Java、Python等編程語言對正負整數取餘運算的底層邏輯理解

    偶然遇到一個python取餘運算的問題,不是很理解,於是查找了一些文章進行分析

本文章參考    http://ceeji.net/blog/mod-in-real/   進行實例分析

 直接引用結論

  1. 1.對於任何同號的兩個整數,其取餘結果沒有爭議,所有語言的運算原則都是使商儘可能小。

  2. 2.對於異號的兩個整數,C++/Java語言的原則是使商儘可能大,很多新型語言和網頁計算器的原則是使商儘可能小


舉例:

image.png


分析驗證:


對於Python中,正負整數取餘運算:


        若除數,被除數同號:


                1) 99 % 7         分解操作 => 7 * 14 + 1   , 商爲 14 ,餘數爲 1      

                                            分解操作=> 7 * 15 +(-6),商爲 15,餘數爲 -6

                        

                        由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 14 ,餘數爲 1

  

                2)-99 % (-7) 分解操作 => -7* 14  +(-1),商爲 14,餘數爲 -1

                                             分解操作 => -7*-15  +    6    ,商爲 15,餘數爲 6


                        由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 14 ,餘數爲 -1


           

         若除數,被除數異號:


                1) 99 % -7         分解操作 => -7 * (-14) +     1    , 商爲 -14 ,餘數爲 1  

                                             分解操作 => -7 * (-15) +(-6),商爲 -15,餘數爲 -6

  

                        由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 -15 ,餘數爲 -6


                2)-99 % 7          分解操作 => 7*(-14)+(-1),商爲 -14,餘數爲 -1

                                             分解操作 => 7*(-15)+(6),商爲 -15,餘數爲 6


                        由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 -15 ,餘數爲 6

 

以上驗證實驗輸出結果。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章