计算机组成原理——数字

数字

无符号数和有符号数

无符号数
  • 寄存器长度反映无符号数长度
有符号数
  • 数值部分和符号部分
  • 机器数(符号数字化的数)和真值(带符号的数)
原码表示法

在这里插入图片描述

小数

在这里插入图片描述

原码特点

在这里插入图片描述

补码表示
  • 补的概念:

    在这里插入图片描述

  • 结论:

    • 负数加上模就是负数的补数
    • 一个正数和负数互为补数,那么他们的绝对值之和为模数
  • 正数的补数为本身
    在这里插入图片描述

  • 补码定义:
    在这里插入图片描述

    ![在这里插入图片描述](https://img-blog.csd
    nimg.cn/20210222223151606.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ljaHljaHljaDE=,size_16,color_FFFFFF,t_70)

  • 求补码快捷方式:

    如果真值是负值:

    原码的符号位不变,数值位取反加1

反码表示:
  • 定义:
    在这里插入图片描述在这里插入图片描述

  • 三种方式小结:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    理解:正数的原码,符号位取反,得到的就是这个数的负数的原码,再通过对原码的取反+1得到的就是补码,因此连贯起来的操作就是正数的补码全位置取反+1得到的就是负数的补码。这里的2-n次方是因为表示的是二进制小数,+1的自然也是最后一位的数。

移码表示

补码难以直接判断真值大小
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

数的定点表示和浮点表示:

定点表示:
  • 小数点按约定方式标出
    在这里插入图片描述
浮点表示:
  • 为什么要浮点数表示:

    • 编程困难,程序员需要调节小数点的位置
    • 数表示的范围小,为了能表示两个大小相差很大的数据,需要使用很长的机器字长
  • 浮点表示:

在这里插入图片描述

  • 浮点数表示形式:
    在这里插入图片描述浮点数的位数部分使用补码表示。

  • 浮点数的表示范围:
    在这里插入图片描述m为阶码位数,n为尾数尾数;要保证最大正数:那么阶码为全1符号为0,尾数因为是小数,最大值为全1符号为0;最小正数:那么阶码为全1符号为0,这样保证了小数点向左移最多位,同时尾数符号为0,数字为全0,最后一个位置为1;依次类推

    说明:

    • 最小负数:当数符为1,尾数为全1(因为使用补码表示,所以当尾数为全1,表示的负数为最小),同时阶符为0(表示小数点向右移),阶数为全1(最大的阶数,将小数点向右移道能移的最大位置)

    • 最大负数:当数符为1,尾数最后一位为1(因为这个数是能表示的最小的数字,当时加上了负号,表示的就是最大的负数),同时阶符为1,阶码为全1(表示能向左移的最大位置)

    • 例题:
      在这里插入图片描述当m为4,表示的阶码最大可以到达15,且当精度为18位表示的最大数字与1的差距可以到达2的-18次方,可以推断可以到达±3万。

  • 浮点数规格化形式:
    r=2 尾数的最高位为1 因为这是为了保证前面无效的0都被阶码来表示了,从而能使浮点的尾数更长

    r=4 尾数的最高两位不全为0 因为浮点数的形式必须要0.xx的形式,但是一位以4为底的阶码表示的是将尾数左移2位,这就不能保证最高位的数字一定是1了。

    r=8 尾数的最高三位不全为0 同上
    在这里插入图片描述

    解释:范围越大是因为,一位阶码表示的尾数左移尾数变多了,精度降低是因为,基数越大,就必须考虑表示出来的尾数的最高一位甚至更多位为0的情况,这就导致了精度的缺失

    例子:
    在这里插入图片描述

    虽然看起来,规格化的表示正负数的最小范围没有非规格化表示的范围大,但是在1后面可以跟上更多的数,这样表示的精度也就增加了

  • 例子:
    在这里插入图片描述在这里插入图片描述

  • 机器0:

    • 当尾数为0,阶码无论何值都表示机器0

    • 阶码表示了它能表示的最小值,尾数无论为何值,当0处理
      在这里插入图片描述

      阶码为移码表示,当阶码为全0,表示的就是0

  • IEEE754:
    在这里插入图片描述

定点运算

移位运算:
  • 意义:
    在这里插入图片描述

  • 算数移位:

    符号位不变
    在这里插入图片描述

    解释:正数的原反补都是相同的,只需要添加代码0

    ​ 负数的原码和正数的原码唯一的区别就是符号位不同,因此也是添加0

    ​ 负数的反码和正数的原码区别是符号位不同,且后面的0变为1,1变为0,所以原码添加的0需要变为1

    ​ 负数的补码和正数的原码区别是符号,且变化规则是正数的原码通过将从右至左第一位1左边的所有位置除符号位,变化为反,右边是不变化的,所以左移添0,右移添1。

  • 硬件实现:
    在这里插入图片描述

    补码:左移位丢弃1,因为对应的是真值的0,不影响,但是右移位丢弃1,对应的是真值的1,导致精度缺失

  • 算数移位和逻辑移位:
    在这里插入图片描述

加减法运算:
  • 补码加减法运算公式
    在这里插入图片描述

    例子:
    在这里插入图片描述

  • 溢出判断

    • 一位符号位判断

      参加操作的两个操作数,符号相同,运算得到的符号不同就是溢出

      最高有效位的进位和符号位的进位异或结果=1 这两个位不相同,说明了溢出,解释:当符号位变化了(表示符号位都是1,也就是负数相加的情况)当最高有效位没有变化(两个负数的最高有效位都是0,这是一个很大的数,当这里发出了进位,那么这个进位就会到符号位中,这样符号位也就变为1了,也就不会溢出),溢出

  • 补码加减法硬件配置
    在这里插入图片描述

乘法运算:
  • 分析笔算乘法:
    在这里插入图片描述

    符号位单独处理:这个可以通过一个异或来实现

    乘数的一位来判断结果是否加上被乘数

    部分积相当于第一个乘数是向右移动了

  • 改进:
    在这里插入图片描述

    通过不停的右移,判断是否为1,来计算

  • 竖式:
    在这里插入图片描述通过将部分积右移的方式,当乘数为1,表示做乘1,加上被乘数,同时右移,当为0,表示做乘0,不加同时右移。

  • 小结:
    在这里插入图片描述

  • 原码的乘法:
    在这里插入图片描述

    符号位单独处理,值进行乘法运算

    • 递推公式:
      在这里插入图片描述在这里插入图片描述

      哪个符号位的值,可以看成一个防止溢出设立的位置,并不是符号位
      在这里插入图片描述

  • 原码乘法硬件配置:
    在这里插入图片描述

除法运算:
  • 分析笔算除法:
    在这里插入图片描述

  • 笔算除法和机器除法的比较
    在这里插入图片描述

  • 原码除法
    在这里插入图片描述

  • 恢复余数法:
    在这里插入图片描述

    判断两个正数的大小,使用一个正数+另一个正数的负数的补码,一位第一个数是正数所以,原反补相同,第二个数是负数,所以最高位就变成了符号位。
    在这里插入图片描述

    在小数定点机中,因为商的结果只能表示为小数的形式,所以当商的结果大于1的就没有办法表示,所以当第一次上商为1,那么就发送了溢出

  • 不恢复余数法:
    在这里插入图片描述

    可以看到,恢复余数法中,当余数小于0,则被除数恢复加上除数,进行左移操作,然后进行减除数,继续行一轮的余数判断,这就等于此时左移再加上余数。所以得到不恢复余数法的运算规则。
    在这里插入图片描述在这里插入图片描述

  • 硬件实现
    在这里插入图片描述

浮点运算:

浮点的加减运算:

在这里插入图片描述

  • 对阶:
    在这里插入图片描述

    在对阶的时候,需要选择尾数右移,阶数增大的方式,这样虽然会出现数值的不准,但是丢失的精度较小。

  • 规格化:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    使用双符号位,00表示正,11表示负,这样可以保证溢出也能得到合适结果,当双符号位出现了01,表示最高数值位进了1(00+00=00但是结果等于了01),但是符号位没有进位,会导致正溢出;当出现10,11+11=1 10;因为最高数字为没有进位为0,符号位进位了为1,异或得1。
    左归是为了保证尾数的最高位是1,所以当数位出现11和00的情况下当最高位不是对应的值1(因为尾数是补码的形式,当数位为11需要尾数为0,这个0对应的就是11中的1)需要进行左归

  • 例子:
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

算数逻辑单元:

ALU电路:

在这里插入图片描述

快速进位链:

  • 并行加法器:
    在这里插入图片描述

  • 串行进位链:
    在这里插入图片描述

    使用德摩根律化简

  • 并行进位链:
    在这里插入图片描述

  • 单重分组进位链:
    在这里插入图片描述

  • 双重分组跳跃进位链:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值