時鐘 取模與環

2021-07-13 13:20:04 字數 810 閱讀 1822

邏輯上的取模運算可通過物理上的環狀結構實現。比如跑道,比如時鐘,比如現在是 9 點鐘,5 小時之後是幾點,是 2 點,怎麼算的? (9

+5)%

12=2

對嗎?這裡強調的倒不是取模的計算方法,而是取模運算可通過環狀結構實現。

環中兩點間的最大間隔:

max(

min(x,

y)),

x,y∈

環 (x

,y) :表示兩點間的允許距離,環中從一點到另外一點一般有兩條路徑,順時針和逆時針。

比如鐘錶中的兩點,1點到6點,距離為(5,7)(兩者之和構成乙個環的長度)。

顯然對於時鐘而言,

max(

min(x,

y))=

(12,6

) 在比如以 也讓其構成乙個環,環的長度為 13. 環的兩點間的最大長度為仍為 6.

其實環的兩點間的最大長度的更為簡潔的計算公式為: d=

⌊d2⌋

所有滿足 (x+y) mod 12 = 0 的 x與y 的組合如下:

此時 x 與 -y 的作用是相同的;

也即來到 1 的位置,進一步,我們可以這樣理解 x 與 y 的關係,x 與 y 互為倒數。等式本身的實際意義在於,以每次 x 的大小波動 y 次,來到 1 點的位置。

取模與取餘

通常情況下取模運算 mod 和求餘 rem 運算被混為一談,因為在大多數的程式語言裡,都用 符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下 運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。對於整型數a,b來說,取模運算或者求餘運算的方法都是 1.求 整數商 c a ...

取模與取餘的區別

其實取模和取餘在目標上是一致的,但是因為語言對取餘和取模上定義的不同,導致得到的結果不同。對取餘和取模定義不同的語言中,兩者的不同點只有乙個 取餘運算在計算商值向0方向捨棄小數字 取模運算在計算商值向負無窮方向捨棄小數字 同時,也可以這樣理解 從上面的區別可以總結出,取餘 rem 和取模 mod 在...

C 中的取餘與取模

目前為止,我並沒有找到c 中數學意義上的取模操作。是一種取餘運算。假設r a mod b,關於取模與取餘的一點概念有 那麼,c 中什麼時候會用到取模?在型別轉換時,當把乙個超出範圍的值v賦給乙個無符號型別時,其計算方法是 先確定無符號型別的可取數n 最終結果 v mod n 比如,把 1賦值給uns...