计组第六章疑难笔记
1.为何是以2n+1为模
这里 0 > x ≥ 2n(mod 2n+1)是之所以是以2n+1为模,是因为要求一个负数的补码的时候需要加上两次2n,第一次是求补码,第二次是要为补码加上符号位
2.那么为什么我们需要为补码加上符号位呢?
两个互为补数的两个数在计算机中的补数是相同的(10101四五位所以默认最高位被丢掉),所以为了区分两个互为补数的补数,我们需要为补码加上符号位
3.为何+0和-0的补码相同
(在字长为5位的计算机中)
我们知道+0和-0的补码都是是0.0000
,因为当为+0的时候,原码等于补码为0.0000
,由补码的定义
我们知道负数的补码=原码的反码+1,-0的原码是1.0000
,那么其反码为1.1111
,末尾加1得补码为10.0000
由于是一个五位机那么就会有进位丢失,所以前面的1应该舍去,所以补码还是0.0000
4.为何-1.0有补码
我们有一个公式:
一个负数的补码=模 - 该负数的绝对值对应的二进制(请自觉摒弃符号位这一概念,就是二进制)
如果对这个公式理解不够深刻的话,可以参考这一篇博客:
根据补数的定义,我们可以使用2+[X]原= =[X]补,-1.0的原码为:-1.000 0000即求
2-1.000 0000=1.000 0000
。所以八位小数定点机可以表示-1.0但是切记 -1.0是没有原码的
5. 数的浮点表示
规格化数:计算机规定浮点数的尾数用纯小数表示,即整数部分为0,将尾数最高位为1的浮点数称为规格化数
6.IEE754标准
IEE754标准里边的小数点的位置包含两个小数点,第一个小数点表示的是阶符小数点的位置,第二个表示尾数小数点的位置。由于规格化数的最高位是都是1所以我们可以把最高位隐含掉,用的时候再填上,这样可以增加尾数的表示范围
7.加减法溢出判断
一位符号位判断溢出,当两者是正数,符号位一定不会进位,如果最高有效位进位,那么就发生溢出,当两者都是负数,由于负数是用补码进行计算,符号位一定会进位,负数补码最高有效位和原码正好相反,所以当负数的最高有效位进位,由于与原码相反,那么原码就一定不会进位,所以就不会发生溢出,否则就会发生溢出
8.反向器
对X当中的数进行求补运算的时候,按位取反可以在加法器和寄存器之间加一个反向器,末位加1,可以使加法器最末位外来进位1达到负数求补的目的
9.原码一位乘ACC寄存器为啥是N+1位
这里部分积取取n+1位即ACC寄存器是n+1位,最高位存的不是符号位,而是低位数值部分相加以后向高位的进位,虽然小数乘以小数不会大于1,也就是不会向整数部分产生进位,但是部分积在没有移位之前最高位可以大于0,就比如下图的部分积第四次没移位之前,最高位是1
10.对原码两位乘的理解
当乘数的两位检测到11的时候,我们只需要做减去被乘数,然后再加上四倍的被乘数,在11位置加四倍的被乘数,可以交给11前面两位的乘数来做,因为
11+1=100
,也就是让11前面两位被乘数+1,再进行相应的操作,这个过程是触发器置1来实现,如果检测两位数的时候触发器为1,那么机器就会把这两位数加1然后再进行相应的操作
11.对浮点数加减法溢出的理解
这里的最大负数,由于2-1不是规格化数,而我们又要保证位数是规格化数,又要保证尾数最小,所以我们就要把尾数写成2-1+2-n
本文地址:https://blog.csdn.net/qq_45737068/article/details/108421256