posts - 134,comments - 22,trackbacks - 0
          《高效程序的奧秘》(Henry S.Warren,Jr.著)第9章“整數除法”中說:
              除法運算是一個復雜的過程,含有除法的算法通常都不很精巧。甚至連如何定義整數除法都是一個值得研究的問題。大多數高級語言和大多數計算指令集將其定義為有理數結果的向零截取。這一定義以及其他兩種可能的定義敘述如下:
              --------- ---截取-- ---模--- --地板--
               7 /  3 =  2 余   2 余 1   2 余  1
              -7 /  3 = -2 余 -1  -3 余 2  -3 余  2
               7 / -3 = -2 余  -2 余 1  -3 余 -2
              -7 / -3 =  2 余 -1   3 余 2   2 余 -1
              --------- --------- -------- --------

              對于所有三種可能的定義,關系“被除數=商×除數+余數”都成立。在定義“模”(modulus)除法時,要求余數是非負數。在定義“地板”(floor)除法時,要求商是有理數除法的結果的“地板”。對于除數是正的情況,模除法和地板除法等價。很少使用的第四種可能定義是向最接近的整數舍入。
              所以,“裝配腦袋”所說的“數學上規定”實際上是指“地板”除法。而現有的高級語言(如C、C++、C#、Java、Fortran、Ada、Pascal等)大多數都使用“截取”除法,IBM的PL.8語言使用“模”除法,Knuth的MMIX計算機的除指令使用“地板”除法。
              [C#語言規范 7.7.2]中說:(整數)除法將結果舍入到零,并且結果的絕對值是小于兩個操作數的商的絕對值的最大可能整數。當兩個操作數符號相同時,結果為零或正;當兩個操作數符號相反時,結果為零或負。
          posted on 2009-04-12 16:30 何克勤 閱讀(613) 評論(0)  編輯  收藏 所屬分類: 其他
          主站蜘蛛池模板: 松潘县| 新宁县| 久治县| 丹巴县| 剑阁县| 神农架林区| 汽车| 祁阳县| 达日县| 杨浦区| 西华县| 富源县| 南开区| 阳城县| 辉南县| 穆棱市| 曲阳县| 枣强县| 绥阳县| 化州市| 陵川县| 博野县| 正安县| 福建省| 湟源县| 通渭县| 新蔡县| 临漳县| 自治县| 凭祥市| 清河县| 莲花县| 日喀则市| 霞浦县| 息烽县| 白水县| 丰城市| 周宁县| 德化县| 兖州市| 临泉县|