计算机组成原理 第六章 计算机的运算方法 Part4 浮点数的四则运算、IEEE754标准与ALU的工作原理

1.浮点数介绍

基本格式

首先需要明确的是浮点数的组成,浮点数由阶码和尾数两部分组成
其中阶码又分为阶符和数值部分,阶码J和阶码的位数m共同反应浮点数的表示范围以及小数点的实际位置;尾数由数符和数值部分组成,数符代表浮点数的符号,尾数的数值部分反映浮点数的精度

例:

阶码E反映浮点数的表示范围及小数点的实际位置
尾数M的数值部分反映浮点数的精度
阶码和尾数的表示:
阶码:常用补码或移码表示的定点整数
尾数:常用原码或补码表示的定点小数
浮点数的真值:N=r^E*M,其中r为阶码的底,通常为2 

 

规格化 

表示范围


运算结果大于最大正数时称为正上溢,小于绝对值最大负数时称为负上溢,正上溢和负上溢统称上溢。
数据一旦产生上溢,计算机必须中断运算操作,进行溢出处理。
当运算结果在0至最小正数之间时称为正下溢,在0至绝对值最小负数之间时称为负下溢,正下溢和负下溢统称下溢。
数据下溢时,浮点数值趋于零,计算机仅将其当作机器零处理。

IEEE754

浮点数的表示主要用的是IEEE标准

IEEE 754标准的浮点数(除临时浮点数外),是尾数用采取隐藏位策略的原码表示,且阶码用移码表示的浮点数。
以短浮点数为例,最高位为数符位;其后是8位阶码,以2为底,用移码表示,阶码的偏置值为28-1-1= 127;其后23位是原码表示的尾数数值位。
对于规格化的二进制浮点数,数值的最高位总是“1”,为了能使尾数多表示一位有效位,将这个“1”隐含,因此尾数数值实际上是24位。隐含的“1”是一位整数。
在浮点格式中表示的23位尾数是纯小数。
将它规格化后结果为1.1x2^{3}, 其中整数部分的“1”将不存储在23位尾数内。

因为IEEE754的阶码部分用的是移码表示,所以我们先回顾一下移码的概念,在我们学习原码,反码,补码和移码的时候,对于移码给出的定义是:在补码的基础上将符号位取反(移码只能表示整数),移码真正的定义为:移码=真值-偏置值

在IEEE754标准中,偏置值等于127D=01111111B
需要特别注意的是,对于规格化的二进制浮点数,数值的最高位总是“1”,为了能使尾数多表示一位有效数字,将这个“1”隐含

 

具体规则

 2.浮点数运算

加减


1对阶:使两个操作数的小数点位置对齐,即使得两个数的阶码相等。遵循的原则是小阶向大阶看齐。如果尾数右移,阶码加1,尾数左移,阶码减1
2尾数加减:对阶后的尾数按定点数渐渐规则运算
3规格化:由于IEEE754尾数采用的是补码表示,前面的知识我们知道补码规格化后,符号位与最高数值位一定相反,故当尾数最高数值位与符号位不同时才为规格化形式。这里也分为左规和右规
左规:当尾数为00.0xxx或11.1xxxx时左规,尾数左移一位,和的阶码减1
右规:当尾数求和结果溢出时(尾数为10.xx或01.xx)时右规,右规尾数右移一位,和的阶码加1 注意:高位补位时看双符号位的更高位,因为双符号位的跟高位的符号才是正确的符号
4舍入:在对阶和右规的过程中可能会将尾数的低位丢失从而引起误差,故须用”0“舍”1“入法或恒置”0“法,这里就不再赘述
5判溢出

具体例题

 

 

左规右规

 

 

舍入
在对阶和右规过程中,可能出现尾数末位丢失
引起误差,需考虑舍入
(1)“0 舍 1 入”法
(2)“恒置 1”法
溢出判断
设机器数为补码,尾数为规格化形式,并假设
阶符取 2 位,阶码取 7 位,数符取 2 位,尾数
n 位,则该补码在数轴上的表示为
乘除

3.ALU

ALU—算术逻辑单元

1.功能

2.基本结构

3.ALU芯片

加法器

(1)基本的一位全加器

在这里插入图片描述

(2)串行加法器

在这里插入图片描述

(3)并行加法器

1.串行进位的并行加法器

在这里插入图片描述

2.并行进位的并行加法器

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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-05 21:26:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-05 21:26:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-05 21:26:04       82 阅读
  4. Python语言-面向对象

    2024-06-05 21:26:04       91 阅读

热门阅读

  1. Flutter 中的 Table 小部件:全面指南

    2024-06-05 21:26:04       31 阅读
  2. pytest-playwright 插件的使用

    2024-06-05 21:26:04       30 阅读
  3. wpf窗体背景添加径向渐变效果实现

    2024-06-05 21:26:04       27 阅读
  4. 【LeetCode 1】两数之和

    2024-06-05 21:26:04       30 阅读
  5. RUST运算符重载

    2024-06-05 21:26:04       26 阅读
  6. 【linux自动化实践】linux shell 脚本 替换某文本

    2024-06-05 21:26:04       30 阅读
  7. 数据结构学习笔记(6)--特殊矩阵的压缩存储

    2024-06-05 21:26:04       29 阅读
  8. 云计算和雾计算

    2024-06-05 21:26:04       28 阅读
  9. 【面试】JDK和JVM是什么关系?

    2024-06-05 21:26:04       31 阅读
  10. 使用 AlarmManager 结合广播接收器来实现定时检查

    2024-06-05 21:26:04       27 阅读