当前位置: 首页 > news >正文

《计算机组成原理》(第3版)第6章 计算机的运算方法 复习笔记

第6章 计算机的运算方法

一、无符号数和有符号数

(一)无符号数
无符号数,即没有符号的数。因此,在机器字长相同时,无符号数与有符号数所对应的数值范围是不同的。

(二)有符号数
1.机器数与真值
用“0”表示“正”,用“1”表示“负”,并且规定将它放在有效数字的前面,即组成了有符号数。
2.原码表示法
符号位为0表示正数,符号位为1表示负数,数值位即真值的绝对值。
(1)整数原码的定义为:
在这里插入图片描述(2)小数原码的定义为:
在这里插入图片描述
优点:原码表示简单明了,并易于和真值转换;
缺点:机器运算时比较繁琐;原码中的”零”有两种表示形式。
3.补码表示法
(1)补数
①一个负数可用它的正补数来代替,而这个正补数可以用模加上负数本身求得;
②一个正数和一个负数互为补数时,它们绝对值之和即为模数;
③正数的补数即该正数本身。
(2)补码的定义
①整数补码的定义为:
在这里插入图片描述
②小数补码的定义为:
在这里插入图片描述

4.反码表示法
反码的定义如下:
在这里插入图片描述

5.移码表示法
移码的定义如下:
在这里插入图片描述
其实移码就是在真值上加一个常数2n。在数轴上移码所表示的范围恰好对应于真值在数轴上的范围向轴的正方向移动2n个单元,如图6-1所示,由此而得移码之称。移码表示中零也是惟一的。
在这里插入图片描述图6-1 移码在数轴上的表示
6.表6-1列出了真值、补码和移码的对应关系。
表6-1 真值、补码和移码对照表
在这里插入图片描述

二、数的定点表示和浮点表示

(一)定点表示
小数点固定在某一位置的数为定点数,有以下两种格式:
在这里插入图片描述
(二)浮点表示
浮点数即小数点的位置可以浮动的数,通常,浮点数被表示成:
在这里插入图片描述等式中,S为尾数(可正可负),j为阶码(可正可负),r是基数(或基值)。在计算机中,基数可取2,4、8或16等。
1.浮点数的表示形式
浮点数在机器中的形式如下所示:
在这里插入图片描述2.浮点数的表示范围
以通式N=S×rj为例,设浮点数阶码的数值位取m位,尾数的数值位取n位,当浮点数为非规格化数时,它在数轴上的表示范围如图6-2所示。
在这里插入图片描述
图6-2 浮点数在数轴上的表示范围
3.浮点数的规格化
将非规格化数转换成规格化数的过程称为规格化。对于基数不同的浮点数,因其规格化数的形式不同,规格化过程也不同。

(三)定点数和浮点数的比较
1.当浮点机和定点机中数的位数相同时,浮点数的表示范围比定点数的大得多;
2.当浮点数为规格化数时,其相对精度远比定点数高;
3.浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化;
4.浮点数是对规格化数的阶码进行判断,而定点数是对数值本身进行判断。

(四)IEEE 754标准
现代计算机中,浮点数一般采用IEEE制定的国际标准,这种标准形式如下:
在这里插入图片描述

三、定点运算

(一)移位运算
1.移位的意义
移位运算称为移位操作,左移或右移时,其实质就是该数乘以或除以2n(n=1,2,…,n)。
2.算术移位规则
表6-2列出了三种不同码制的机器数(整数或小数均可),分别对应正数或负数移位后的添补规则。
表6-2 不同码制机器数算术移位后的空位添补规则
在这里插入图片描述
3.算术移位和逻辑移位的区别
有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。逻辑移位的规则是:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。

(二)加法与减法运算
1.补码加减运算的基本公式
(1)加法
①整数
在这里插入图片描述
②小数
在这里插入图片描述
(2)减法
①整数
在这里插入图片描述
②小数
在这里插入图片描述
2.溢出判断
(1)用一位符号位判断溢出
①对于加法,只有在正数加正数和负数加负数两种情况下才可能出现溢出,符号不同的两个数相加是不会溢出的。
②对于减法,只有在正数减负数或负数减正数两种情况下才可能出现溢出,符号相同的两个数相减是不会溢出的。
表6-3列出了四种溢出情况。
表6-3 补码定点运算溢出判断举例
在这里插入图片描述
(2)用两位符号位判断溢出
上面已提到过2位符号位的补码,即变形补码,它是以4为模的,其定义为
在这里插入图片描述
在用变形补码作加法时,2位符号位要连同数值部分一起参加运算,而且高位符号位产生的进位自动丢失.便可得正确结果,即
在这里插入图片描述
变形补码判断溢出的原则是:当2位符号位不同时,表示溢出,否则,无溢出。不论是否发生溢出,高位(第1位)符号位永远代表真正的符号。
3.补码定点加减法所需的硬件配置
图6-3是实现补码定点加减法的基本硬件配置框图。
在这里插入图片描述
图6-3 补码定点加减法硬件配置
4.补码加减运算控制流程
补码加减运算控制流程如图6-4所示。
在这里插入图片描述
图6-4 补码加减运算控制流程

(三)乘法运算
1.分析笔算乘法;
2.笔算乘法的改进;
3.原码乘法:
(1)原码一位乘的运算规则如下:
①乘积的符号位由两原码符号位异或运算结果决定;
②乘积的数值部分由两数绝对值相乘。
(2)原码一位乘所需的硬件配置
图6-5是实现原码一位乘运算的基本硬件配置框图。
在这里插入图片描述
图6-5 原码一位乘运算基本配置
(3)原码一位乘控制流程
原码一位乘控制流程如图6-6所示。
在这里插入图片描述
图6-6 原码一位乘控制流程
  (4)原码两位乘
原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度。
①两位乘数共有四种状态,对应这四种状态可得表6-4。
表6-4 两位乘数所对应的新的部分积
在这里插入图片描述
②原码两位乘的运算规则如表6-5所示。
表6-5 原码两位乘的运算规则
在这里插入图片描述
4.补码乘法
(1)补码一位乘运算规则
在这里插入图片描述
(2)补码比较法所需的硬件配置
图6-7是实现补码一位乘比较法乘法运算的基本硬件配置框图。
在这里插入图片描述
图6-7 补码比较法运算基本硬件配置
(3)补码比较法控制流程
补码一位乘比较法的控制流程图如图6-8所示。
在这里插入图片描述
图6-8 补码一位乘比较法控制流程图
(4)补码两位乘
表6-6列出了补码两位乘的运算规则。
表6-6 补码两位乘的运算规则
在这里插入图片描述
(四)除法运算
1.分析笔算除法
2.原码除法
原码除法和原码乘法一样,符号位是单独处理的,下面以小数为例。设
在这里插入图片描述
(1)恢复余数法
恢复余数法的特点是:当余数为负时,需加上除数,将其恢复成原来的余数。
(2)加减交替法
加减交替法又称不恢复余数法,可以认为它是恢复余数法的一种改进算法。
(3)原码加减交替法所需的硬件配置
图6-9是实现原码加减交替法运算的基本硬件配置框图。
在这里插入图片描述
图6-9 原码加减交替法运算的基本硬件配置
(4)原码加减交替法控制流程
图6-10为原码加减交替法控制流程图。
在这里插入图片描述
图6-10 原码加减交替法控制流程图
3.补码除法
(1)补码加减交替法运算规则
补码除法的符号位和数值部分是一起参加运算的。
(2)补码加减交替法所需的硬件配置
补码加减交替法所需的硬件配置基本上与图6-9相似。
(3)补码加减交替法的控制流程
补码加减交替法的控制流程如图6-11所示。
在这里插入图片描述
图6-11 补码加减交替法控制流程

四、浮点四则运算

(一)浮点加减运算
设两个浮点数
在这里插入图片描述
1.对阶
对阶的目的是使两操作数的小数点位置对齐,即使两数的阶码相等。
2.尾数求和
将对阶后的两个尾数按定点加(减)运算规则进行运算。
3.规格化
(1)左规
当尾数出现O0.0××…×或11.1××…×时,需左规。
(2)右规
当尾数出现O1.××…×或10.××…×时,需右规。
4.舍入
(1)“0舍1入”法
尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能使尾数又溢出,此时需再做一次右规。
(2)“恒置1”法
尾数右移时,不论丢掉的最高数值位是“1”或“0”,都使右移后的尾数末位恒置“1”。
5.溢出判断

(二)浮点乘除法运算
两个浮点数相乘,乘积的阶码应为相乘两数的阶码之和,乘积的尾数应为相乘两数的尾数之积。两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码,尾数为被除数的尾数除以除数的尾数所得的商。
1.阶码运算
若阶码用补码运算,乘积的阶码为[jx]补+[jy]补,商的阶码为[jx]补-[jy]补。
2.尾数运算
(1)浮点乘法尾数运算;
(2)浮点除法尾数运算。

(三)浮点运算所需的硬件配置
浮点运算器主要由两个定点运算部件组成。一个是阶码运算部件,用来完成阶码加、减,以及控制对阶时小阶的尾数右移次数和规格化时对阶码的调整;另一个是尾数运算部件,用来完成尾数的四则运算以及判断尾数是否已规格化,此外,还需有判断运算结果是否溢出的电路等。

五、算术逻辑单元

(一)ALU电路
图6-12所示是ALU框图。
在这里插入图片描述
图6-12 ALU框图

(二)快速进位链
1.并行加法器
并行加法器由若干个全加器组成,如图6-13所示。n+1个全加器级联就组成了一个n+1位的并行加法器。
在这里插入图片描述
图6-13 并行加法器示意图
2.串行进位链
串行进位链是指并行加法器中的进位信号采用串行传递。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL Workbench数据库常用操作, HeidiSQL工具使用
  • 无字母绕过webshell
  • 手机云测试平台推荐
  • grom接入Prometheus,grafana
  • 我从“天坑”专业转行到AI工程师,年薪一跃30W!
  • 初识python人脸识别(简单小项目)
  • Android 启动动画太生硬
  • Google Earth Engine(GEE)——在选定的时间内,按照时间循环筛选影像中的第一幅影像并导出到Google 硬盘
  • Leetcode - 周赛410
  • 企业如何组建安全稳定的跨国通信网络
  • Android SystemServer启动流程
  • 有什么蓝牙耳机值得推荐一下吗?百元开放式耳机选购指南
  • 240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank
  • linux下ETCD安装、配置、命令
  • 如何让键盘F2功能键设置成重命名键(Fn+Esc)
  • 收藏网友的 源程序下载网
  • 【技术性】Search知识
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Consul Config 使用Git做版本控制的实现
  • gf框架之分页模块(五) - 自定义分页
  • HTTP--网络协议分层,http历史(二)
  • Java小白进阶笔记(3)-初级面向对象
  • js正则,这点儿就够用了
  • Otto开发初探——微服务依赖管理新利器
  • SpiderData 2019年2月25日 DApp数据排行榜
  • V4L2视频输入框架概述
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从输入URL到页面加载发生了什么
  • 搭建gitbook 和 访问权限认证
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前端攻城师
  • 设计模式(12)迭代器模式(讲解+应用)
  • 物联网链路协议
  • 小而合理的前端理论:rscss和rsjs
  • 学习JavaScript数据结构与算法 — 树
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • # centos7下FFmpeg环境部署记录
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $().each和$.each的区别
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (论文阅读40-45)图像描述1
  • (十三)MipMap
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (转)linux 命令大全
  • (转)德国人的记事本
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .dwp和.webpart的区别
  • .Net 6.0--通用帮助类--FileHelper
  • .NET 的程序集加载上下文
  • .net生成的类,跨工程调用显示注释