清楚指针式钟表的轨迹吗?从自动丢弃的法则到建立位置的映射!

1. 模运算与补数

mod 4 运算可以将所有整数映射到 0, 1 ,2, 3 上:

$$ \begin{Bmatrix} .& ..&.. & .\\ 8 & 9 & 10 & 11\\ 4 & 5 & 6 &7 \\ 0 & 1 & 2 & 3\\ -4 & -3 & -2 & -1\\ .& ..&.. & . \end{Bmatrix} $$

上述每一列数都为同余数,参与$ \ mod \ 4 \ $运算结果相等。如同钟表一样,将古往今来所有的时间都映射在 1 - 12 的表盘上。

drawing

定理 1:同模下两个同余数之和相等,即 $(x + y)mod \ m = (a + b) mod \ m $,其中$ \ x \ $与$ \ a\ $为同余类数,$ \ y\ $与$ \ b\ $为同余数。

证明: 设模为$ \ m \ $, $ \ x \ $ 与 $ \ a \ $ 同余$ \ r_{1} \ $ ,$ \ y \ $ 与 $ \ b \ $ 同余 $ \ r_{2} \ $

$$ \begin{cases} x = t_{1} \cdot m + r_{1} \\ a = t_{2} \cdot m + r_{1} \end{cases} $$

$$ \begin{cases} y = t_{3} \cdot m + r_{2} \\ b = t_{4} \cdot m + r_{2} \end{cases} $$


2. 应用:计算机中的补码

2022-10-05T14:28:53.png
上图是一个模为 8 的系统。第二行 0 - 7 二进制表示为 000 - 111 ;

因为2+5=2+(-3)= 7,考虑用5代替(-3)参与运算。得到结果7后还原为负数,即为真实计算结果。也就是:
2022-10-05T15:00:08.png

3. 作为位置移动看的加减法

怎么理解上述的数域与模域的转换呢?欲计算(-3)+2 ,即(-3)向右移动2个数是谁?因为模系统中(-3)与5位置相同,向右移动2个位置后到了(-1)的位置,同时5也移动到了 7 的位置。由于存在位置上的对应关系,从位置上便可以还原回去。

取模系统中这种位置存在一一映射的部分:即 -4 ~ -1 对应到 4 ~ 7 。将有关负数参与的部分用对应的补数替换,计算出结果后映射回去。
2022-10-05T15:43:21.png

数域里首位1代表负数,0代表整数。模域里首位不是符号位,统一整体都是正数,但是却代表着数域里数字的正负。溢出就是从模空间还原不回去数域。比如(-4)+(-3)【数空间】= 4 + 5【模空间】= 1【模空间】 ≠> -7【数空间】。 看到 1 (001)首位是 0,代表数域里的数字的正数,显然数域里面 负数 + 负数 不可能为 正数,此时我们便说发生了溢出。

    标签: none

Title - Artist
0:00