模运算概念:在一个模运算系统中,一个数与它除以“模”后的余数等价
作用:实现+ 和– 的统一,实现数值运算时使用同一的符号
例如:模12系统时钟 假定钟表时针指向10点,要将它拨向6点, 则有两种拨法: ① 倒拨4格:10- 4 = 6 ② 顺拨8格:10+8 = 18
即模运算:8是- 4对模12的补码,- 4的模12补码等于8 10- 4 ≡ 10+8 (mod 12) - 4 ≡ 8 (mod 12)
模运算实际上就相当与一个一元一次函数,如:1+x=0,求x=?,答:x=0-1 即-1,这个一元一次函数中0就是模,就相当于- 4 ≡ 8 (mod 12)中的12,1和-1就相当于- 4 ≡ 8 (mod 12)中-4和8
至于为什么,因为“溢出”,就像钟表只有12个点,就相当与一个12进制数,而存储这个数的空间只有一位,当超过12点后,时间就放生了“溢出”,可显示的数值就变成了0,那么指向10点的钟表,要将它拨向6点,如果这么看10-x=0,求x,答:x=-4或+8,-4可以理解往后面拨四个小时就行了,+8呢,10点往前拨8个小时,10+8=18,但是模12系统中最大的数位为12,18超过了12发生了溢出,自然就变成6了
换算到计算机系统中的二进制数据,1+x=0,求x=?由于需要表示符号位就变成了,00000001+x=00000000,里面的x就应该代替 -1的二进制编码才对,这样,我们得到 x=11111111,而11111111就是-1,所以称11111111为-1的补码
我们常理解为补码就是负数“按位取反,末尾加一”,我们知道模就是R位模系统中的基数,如:1-1=0,如-1=0-(+1),即二进制的1000000001=0000000000-0000000001,即1000000001=(1111111111-0000000001)+0000000001,正是负数的按位取反,末尾加一
一个负数的补码等于模减该负数的绝对值 1000000001(-1)=0000000000-0000000001(1)
对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替