2. 模的概念
一个计量系统的计数范围。
生活实例:时钟的模为12,计量范围是0~11,11过后又回到 0。
n位计算机数的模为2n,计量范围是0~(2n-1)。
运用:n=4,模为24=16,计量范围是0~15(二进制表示0000~1111)。如当前数15的二进制值为1111,则再加1,计数值就变为了0000,真值就变成了0,而在最高位上溢出了一个1。
3. 补码(以8位二进制为例)
本质:用大的正数来表示小的负数,化减为加。
生活实例:在时钟内:从8点调到5点,有8-3=8+9,则-3=9(绝对值相加等于模)
(1) 原理
8位二进制数原本计数的范围是0~255,因需要表示负数使用补码,将128~255用来表示负数(-1~-128)其二进制首位为1,0~127不变仍表示正数(0~127)其二进制首位为0。
若最终结果超出范围,可增加位数避免溢出。
例:若想记录数128,则需要将8位二进制数提升至16位,扩大计数范围避免溢出。
(2) 补码的二进制表示
如果n是正数,补码就是其二进制,如果n是负数,补码则是n+256的二进制。
「+73」补码 = 01001001
「-73」补码 = 10000000 - 01001001=10110111(183的二进制)
(3) 补码的运算
① 真值到补码:
- 当n是负数,可以通过其相反数各位
取反加1
来快速求出补码。
例:设n=8,求-36补码。
36的二进制=00100100
各位取反得11011011
末位加1结果为11011100即为补码
② 补码到真值:
- 如果补码最高位是1(即真值128以上,代表负数),将各位取反加一,转换为十进制再加负号。
- 如果补码最高位是0(即真值127以下,代表正数),直接转换为十进制即可。
例:假设n的八位补码是10101010,求n真值。
10101010取反加一=01010110
01010110的十进制=86
添加负号n=-86