• 计算机组成原理-----定点数原码和补码的乘法与除法


    算数右移和逻辑右移(左移同理)

    逻辑右移:无论符号位是啥,高位都补零,并且移动的时候是整体移动(符号位也同样右移一位),然后最高位补零;
    算数右移:需要考虑符号位是啥,如果符号位是1,就补1,符号位是0,就补0(符号位是啥就补啥),并且符号位不参与右移;

    定点数原码的除法

    定点数原码的乘法有两种:
    符号位单独处理:采用除数和被除数异或的方式,然后单独处理数值位;
    由于运算过程会用到|x|,|y|,[y]补,[-y]补,所以最好提前计算出来;

    1.恢复余数法:(推荐按照算法描述来写,更容易理解)
    算法描述:
    ① 对被除数和除数取绝对值,先做被除数-除数。
    ② 判断余数是否小于0,若是,则加上除数的补,否则减去除数的补
    ③ 移位,重复步骤② 直到移位次数等于除数的位数,上商的次数为移位次数+1。
    算法流程图:
    在这里插入图片描述
    例题:在这里插入图片描述
    在这里插入图片描述

    方法二:加减交替法(不恢复余数法)
    算法描述:
    ①被除数-除数的绝对值得到新的余数;
    ②根据新的余数判断如果为负数,商0,+余数的绝对值,否则商1,-余数的绝对值;
    算法流程图:
    在这里插入图片描述
    需要注意的是这种方式,最后得到的余数如果是正的,不用管就是结果,如果是负的,需要再加上除数的绝对值的补码才是正确的余数;
    在这里插入图片描述

    定点数补码的除法

    这里除数和被除数都指的是x,y的补码(不是绝对值的补码因为符号位也参与运算);
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最后不用像加减交替法那样做特殊处理;

    定点数原码的一位乘法

    乘法
    手算模拟:原码乘法也是符号位单独处理,优先计算x,y的绝对值。原码乘法只看最低位C4;并进行逻辑右移;
    在这里插入图片描述

    定点数补码的一位乘法

    在这里插入图片描述
    因为是补码的乘法,所以需要计算被乘数x的补码和-x的补码,以及y的补码,并使用这些数据来参与运算;
    增加了辅助位的概念,开始的时候辅助位是0(辅助位是在最低位后边补上的一位),后边就根据辅助位和最低位的大小差来判断当前的结果是+[x]补还是+[-x]补;
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    链表相关的一些问题
    elasticsearch
    【前端笔记】Vue + Element UI开发小技巧,持续更新。。。
    配置你的VsCode服务器,随时随地写代码!
    【Qt】文件系统
    [C进阶] 数据在内存中的存储——浮点型篇
    [Android] AndroidManifest.xml 详解
    榜单!舱内视觉AI应用保持「高增速」,TOP10软件供应商揭晓
    golang 中的 cronjob
    ffmpeg批量转码
  • 原文地址:https://blog.csdn.net/linjianshaonian_/article/details/127721333