计算机组成原理 第五章(计算机的运算方法)—第五节(浮点四则运算)

写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、浮点加减运算

1、浮点加减运算的步骤

(1)对阶,使两数的小数点对齐。

(2)尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)。

(3)规格化。(这一步是为了增加有效数字的位数,提高运算精度)

(4)舍入,要考虑尾数右移时丢失的数值位。

(5)溢出判断,即判断结果是否溢出。

2、对阶

        对阶的目的是使两操作数的小数点位置对齐,即使两数的阶码相等。为此,首先要求出阶差,再按小阶向大阶看齐的原则,使阶小的尾数向右移位,每右移一位,阶码加1(这是基值为2的情况,下面都以基值为2进行介绍),直到两数的阶码相等为止,右移的次数正好等于阶差(尾数右移时可能会发生数码丢失,影响精度)。

3、尾数求和

        将对阶后的两个尾数按定点数加(减)运算规则进行运算

4、规格化

(1)当基值r=2时,尾数S的规格化形式为\frac{1}{2}\leq S< 1

(2)尾数是否符合规格化形式的判断方式如下:(图中没展示符号位)

(3)当一个数不满足规格化形式式,需要对其进行规格化。

当尾数出现“00.0××…×”或“11.1××…×时”,需左规,左规时尾数左移一位,阶码减 1,以此往复,直到数符和第一数位不同为止

当尾数出现“01.××…×”或“10.××…×时”(尾数溢出),需右规,右规时尾数右移一位,阶码加1

5、舍入

(1)在对阶和右规的过程中,可能会将尾数的低位丢失,从而引起误差,影响精度,为此可用舍入法来提高尾数的精度。

(2)常用的舍入方法有以下两种:

①“0舍1入”法:在尾数右移时,被移去的最高数值位为1则在尾数的末位加1(这样做可能使尾数又溢出,此时需再做一次右规),被移去的最高数值位为0则舍去。

②“恒置1”法:尾数右移时,不论丢掉的最高数值位是“1”或“0”,都使右移后的尾数末位恒置“1”(这种方法同样有使尾数变大和变小两种可能)。

6、溢出判断

(1)设机器数为补码,尾数为规格化形式,并假设阶符取2位,阶码的数值部分取7位,数符取2位,尾数取n位,则该补码在数轴上的表示范围如下。

(2)浮点机的溢出与否可由阶码的符号决定,即:

二、浮点乘除法运算

1、浮点乘除法运算过程

(1)两个浮点数相乘,乘积的阶码应为相乘两数的阶码之和,乘积的尾数应为相乘两数的尾数之积。

(2)两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码,尾数为被除数的尾数除以除数的尾数所得的商。

2、阶码运算

(1)做乘法运算时,需要阶码求和:

(2)做除法运算时,需要阶码相减:

(3)阶码采用移码表示后,如果在原有移码符号位的前面(即高位)再增加1位符号位,并规定该位恒用“0”表示,便能方便地进行溢出判断。

①溢出的条件是运算结果移码的最高符号位为1,此时若低位符号位为0即表示上溢,低位符号位为1即表示下溢。

②如果运算结果移码的最高符号位为0,即表明没有溢出,此时若低位符号位为1即表明结果为正,低位符号位为0即表示结果为负。

3、尾数运算

(1)浮点乘法尾数运算:

①检测两个尾数中是否有一个为0,若有一个为0,乘积必为0,不再做其它操作;如果两尾数均不为0,则可进行乘法运算。

②两个浮点数的尾数相乘可以采用定点小数的任何一种乘法运算来完成。相乘结果可能要进行左规,左规时调整阶码后如果发生阶下溢,则作机器零处理;如果发生阶上溢,则作溢出处理。此外,尾数相乘会得到一个双倍字长的结果,若限定只取1倍字长,则乘积的若千低位将会丢失,如何处理丢失的各位值,通常有两种方法。

[1]其一,无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理,处理简单,但影响精度。

[2]其二,按浮点加减运算讨论的两种舍入原则进行舍入处理。对于原码,采用0舍1入法时不论其值是正数或负数,“舍”使数的绝对值变小,“入”使数的绝对值变大。对于补码,采用0舍1入法时,若丢失的位不是全0,对正数来说,“舍”“入”的结果与原码分析正好相同;对负数来说,“舍”“入”的结果与原码分析正好相反,即“舍”使绝对值变大,“入”使绝对值变小。为了使原码、补码舍入处理后的结果相同,对负数的补码可采用如下规则进行舍入处理。

#1 当丢失的各位均为0时,不必舍入。

#2 当丢失的各位数中的最高位为0时,且以下各位不全为0,或丢失的各位数中的最高位为1,且以下各位均为0时,则舍去被丢失的各位。

#3 当丢失的各位数中的最高位为1,且以下各位又不全为0时,则在保留尾数的最未位加1修正。

(2)浮点除法尾数运算:

①检测被除数是否为0,若为0则商为0;再检测除数是否为0,若为0则商为无穷大,另做处理。若两数均不为0,则可进行除法运算。

②两浮点数尾数相除同样可采取定点小数的任何一种除法运算来完成。对已规格化的尾数,为了防止除法结果溢出,可先比较被除数和除数的绝对值,如果被除数的绝对值大于除数的绝对值,则先将被除数右移一位,其阶码加1,再作尾数相除,此时所得结果必然是规格化的定点小数。

三、浮点运算所需的硬件配置

        由于浮点运算分阶码和尾数两部分,因此浮点运算器的硬件配置比定点运算器的复杂。分析浮点四则运算发现,对于阶码只有加减运算,对于尾数则有加、减、乘、除四种运算。可见浮点运算器主要由两个定点运算部件组成,一个是阶码运算部件,用来完成阶码加、减,以及控制对阶时小阶的尾数右移次数和规格化时对阶码的调整;另一个是尾数运算部件,用来完成尾数的四则运算以及判断尾数是否已规格化;此外,还需有判断运算结果是否溢出的电路等。

        现代计算机可把浮点运算部件做成独立的选件,或称协处理器,用户可根据需要选择,不用选件的机器,也可用编程的方法来完成浮点运算,不过这将会影响机器的运算速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2870164.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

c++实现简单搜索二叉树<K,V>形

文章目录 搜索二叉树节点类BSTreeNode(节点类的构造) BSTree(功能实现类)Insert(插入)Erase(删除)Find(查找这个节点) 搜索二叉树 搜索二叉树本质:左节点比我小 右节点比我大 节点类 BSTreeNode:给自身节点封装一个类 用这个类来添加节点的操作 我们写的是一个key.value型的搜…

稀碎从零算法笔记Day19-LeetCode:相交链表

题型&#xff1a;链表基本操作 链接&#xff1a;160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&…

vue3项目

案例用到的知识点如下&#xff1a; ① vite 创建项目 ② 组件的封装与注册 ③ props ④ 样式绑定 ⑤ 计算属性 ⑥ 自定义事件 ⑦ 组件上的 v-model 效果如下图&#xff1b; 页面2 项目结构&#xff1a; 初始化项目 在终端运行以下的命令&#xff0c;初始化 vite 项目&#xf…

前端跨平台开发框架:简化多端开发的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

十四、Nacos源码系列:Nacos配置发布原理

目录 一、简介 二、加密处理 三、发布配置 3.1、插入或更新配置信息 3.2、发布配置数据变动事件 3.2.1、目标节点是当前节点 3.2.2、目标节点非当前节点 四、总结 一、简介 一般情况下&#xff0c;我们是通过Nacos提供的Web控制台登录&#xff0c;然后通过界面新增配置…

苹果Vision Pro官方应用商店(网页版)正式上线

该网站为用户提供了丰富多样的应用资源,包括娱乐、教育、健康、购物、工具等各种类型的应用和游戏。 1、Apps & Games Arcade:提供各种应用和游戏,包括最新推出的、热门的以及专门为Apple Vision Pro设计的应用和游戏。 2、What’s New:展示最新推出的应用和游戏,让…

第388场 LeetCode 周赛题解

A 重新分装苹果 排序 class Solution { public:int minimumBoxes(vector<int> &apple, vector<int> &capacity) {int s accumulate(apple.begin(), apple.end(), 0);sort(capacity.begin(), capacity.end(), greater<int>());int res 0;for (int c…

STM32系列——F103C8T6 控制SG90舵机(HAL库)

文章目录 一、舵机控制原理二、.CubeMX配置配置RCC、SYS、时钟树配置RCC配置SYS配置时钟树配置定时器产生PWM波形 Keil5代码接线图及效果如果您发现文章有错误请与我留言&#xff0c;感谢 一、舵机控制原理 舵机的控制一般需要一个20ms左右的时基脉冲&#xff0c;该脉冲的高电平…

【MatLab】之:Simulink安装

一、内容简介 本文介绍如何在 MatLab 中安装 Simulink 仿真工具包。 二、所需原材料 MatLab R2020b&#xff08;教学使用&#xff09; 三、安装步骤 1. 点击菜单中的“附加功能”&#xff0c;进入附加功能管理器&#xff1a; 2. 在左侧的“按类别筛选”下选择Using Simulin…

基于Springboot+Redis+mysql实现的闲置二手交易网站管理系统

1.1 背景分析 二手商品是学生比较青睐的廉价商品&#xff0c;网站设计应着重突出实用和廉价。也有一部分消费者是淘宝者&#xff0c;他们对相中的商品有着急切的拥有欲望。网上交易的好学生提供一个供需平台&#xff0c;学生可以将自己不用的东西放在网上&#xff0c;也可在网…

通过更新路书当前坐标下marker的icon来展示沿途的风景

通过更新路书当前坐标下marker的icon来展示沿途的风景 1.效果图2.[工程链接](https://download.csdn.net/download/m0_61864577/88978866)3.需修改地方: 本文演示了如何通过百度地图的路书功能,展示途经的风景。定时缩放,既有全局路径,又有当前位置和运动轨迹;可以显示当前坐标…

力扣59. 螺旋矩阵 II

思路&#xff1a;此题思路就是绕圈遍历&#xff0c;全靠条件处理技巧&#xff0c;重点要清楚的就是循环不变量&#xff1a;左闭右开&#xff08;即拐弯处的一个数&#xff0c;留给第二行处理&#xff09; 以下是代码随想录的作者的一张图片&#xff0c;每次for循环&#xff0c;…

SQL的执行与优化

文章目录 MySQL查询原理与优化一、select语句的执行顺序二、join 的执行与优化1、驱动表 & 被驱动表2、Simple Nested Loop Join3、Index Nested Loop Join4、Block Nested Loop Join5、Hash Join6、join 优化小结 三、on 与 where 对比四、group by 的执行与优化1、group …

拜占庭将军问题相关问题

1、拜占庭将军问题基本描述 问题 当我们讨论区块链共识时&#xff0c;为什么会讨论拜占庭将军问题&#xff1f; 区块链网络的本质是一个分布式系统&#xff0c;在存在恶意节点的情况下&#xff0c;希望 整个系统当中的善良节点能够对于重要的信息达成一致&#xff0c;这个机…

设计模式 --3:装扮模式

结构图 代码 #include<iostream>using namespace std;class person { public:person() {};person(string name) { this->name name; }virtual void show() {cout << "装扮的:" << this->name << endl;} private:string name; }; //装…

C语言中,基本数据类型介绍

C语言当中各种数据类型的大小&#xff0c;首先要了解有哪些数据类型。 一 字符型&#xff1a; 整数&#xff08;字符&#xff09;类型存储大小值范围char1 字节-128 到 127 或 0 到 255&#xff08;2的8次方&#xff09;unsigned char1 字节0 到 255&#xff08;&#xff09;s…

搭建个人智能家居 3 -第一个设备“点灯”

搭建个人智能家居 3 -第一个外设“点灯” 前言ESPHome点灯 HomeAssistant 前言 前面我们已经完成了搭建这个智能家居所需要的环境HomeAssistant和ESPHome&#xff0c;今天我们开始在这个智能家居中添加我们的第一个设备&#xff08;一颗LED灯&#xff09;&#xff0c;如果环境…

vim | 介绍vim以及配置vimrc文件

好像熟练使用vim 是玩linux 必修课 当然&#xff0c;初代玩家能在vim 完成编辑 并保存已是入门了&#xff0c;想当初在大学的时候&#xff0c;死活转不过来&#xff0c;玩不过来&#xff0c;甚至有些恐惧 但后来&#xff0c;弄清楚原理&#xff0c;反倒觉得简简单单已是完美了。…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中&#xff0c;安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象&#xff0c;衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台&#xff0c;取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

HJ212协议C#代码解析实现

HJ212协议C#代码解析实现 HJ212协议是环保中一个非常重要的标准协议&#xff08;字符串协议&#xff09;&#xff0c;之前写了两篇C HJ212协议解析的相关博文&#xff1a; 环保 HJ212协议解析基于Qt5.14.2的HJ212 TCP服务端接收解析入库程序 最近在学习C#&#xff0c;所以打算…