• 模除

    編輯
    本詞條由“匿名用戶” 建檔。
    目錄

    模除

    編輯

    在計算中,模運算返回除法的余數或帶符號的余數,在一個數除以另一個數后(稱為運算的模數)。

    給定兩個正數 a 和 n,模 n(通常縮寫為 a mod n)是 a 除以 n 的歐幾里德除法的余數,其中 a 是被除數,n 是除數。

    例如,表達式 5 mod 2 的計算結果為 1,因為 5 除以 2 的商為 2,余數為 1,而 9 mod 3 的計算結果為 0,因為 9 除以 3 的商為 3,余數為 1 0的余數; 3 乘以 3 后,9 無需再減去任何東西。

    雖然通常使用 a 和 n 都是整數來執行,但許多計算系統現在允許其他類型的數字操作數。 n 的整數模運算的值范圍是 0 到 n ? 1(含 0 和 1)(模 1 始終為 0;模 0 未定義,在某些編程語言中可能導致被零除錯誤)。 有關在數論中應用的較早和相關的約定,請參閱模塊化算術。

    當 a 或 n 中恰好有一個為負數時,樸素的定義就失效了,并且編程語言在這些值的定義方式上有所不同。

    定義的變體

    編輯

    在數學中,模運算的結果是一個等價類,該類中的任何一個成員都可以被選為代表; 然而,通常的代表是最小正余數,屬于該類的最小非負整數(即歐幾里得除法的余數)。 然而,其他約定也是可能的。 計算機和計算器有多種存儲和表示數字的方法; 因此,它們對模運算的定義取決于編程語言或底層硬件。

    在幾乎所有的計算系統中,a 除以 n 的商 q 和余數 r 都滿足以下條件:

    (1)

    然而,如果余數不為零,這仍然會留下符號歧義:出現兩種可能的余數選擇,一種為負,另一種為正,并且出現兩種可能的商選擇。 在數論中,總是選擇正余數,但在計算中,編程語言根據語言和 a 或 n 的符號來選擇。 例如,標準 Pascal 和 ALGOL 68 給出正余數(或 0),即使對于負除數也是如此,而一些編程語言,例如 C90,在 n 或 a 中的任何一個為負時將其留給實現(參見§下的表格) 在編程語言中獲取詳細信息)。 在大多數系統中,模 0 是未定義的,盡管有些系統確實將其定義為 a。

    模除

    • 許多實現使用截斷除法,其商定義為整數部分函數(向零舍入),即截斷為零 有效數字。因此根據等式(1),余數與被除數具有相同的符號
    • Donald Knuth 提倡底除法, 其中 ?? 是 floor 函數(向下舍入)。因此根據 等式(1),余數與除數同號
    • Common Lisp 和 IEEE 754 使用舍入除法
    • Common Lisp 也使用上限除法,其商定義為?其中 ?? 是上限函數(四舍五入)。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/195926/

    (1)
    詞條目錄
    1. 模除
    2. 定義的變體

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久