首页 > 其他分享 >计算机组成原理【3】:数据的表示和运算-下

计算机组成原理【3】:数据的表示和运算-下

时间:2024-08-25 16:05:58浏览次数:4  
标签:阶码 运算 下溢 尾数 浮点数 原理 上溢 计算机

概述


浮点数的表示和运算

  • 浮点数的表示;IEEE 754标准;浮点数的加/减运算

浮点数的表示与运算

浮点数的表示


浮点数表示法是指以适当的形式将比例因子表示在数据中,让小数点的位置根据需要而浮动。这样在位数有限的情况下,既扩大了数的表示范围,又保持数的有效精度。

浮点数的表示格式
浮点数由符号、尾数和阶码三部分组成,其表示的数值为:

\[N=(-1)^S\times M\times R^{E} \]

式中,\(S\)取值0或1,用来决定浮点数的符号;\(M\)是一个二进制小输,称为尾数,一般用定点原码小数表示;\(E\)是一个二进制定点整数,称为阶码或指数,用移码表示。\(R\)是基数(隐含),可以约定为2、4、16等。

description
  • 阶码的值反应浮点数小数点的实际位置
  • 阶码的位数反应浮点数的表示范围
  • 尾数的位数反应浮点数的精度

浮点数的表示范围与溢出

浮点数的表示范围是关于原点对称的:

description
  • 正上溢:运算结果大于最大正数是称为正上溢
  • 负上溢:运算结果小于绝对值最大负数时称为负上溢。
  • 上溢:正上溢和负上溢统称为上溢。

数据一旦产生上溢,计算机必须中断运算操作,进行溢出处理。

  • 正下溢:当运算结果在0至最小正数之间时称为正下溢。
  • 负下溢:当运算结果在0至绝对值最小负数之间时称为负下溢。
  • 下溢:正下溢和负下溢统称下溢。

数据下溢时,浮点数值趋于0,计算机将其当作机器零处理。

IEEE754标准

按照IEEE754标准,常用的浮点数格式有32位单精度浮点数(短浮点数,float型)和64位双精度浮点数(长浮点数,double型)。

类型 符号s 阶码e 尾数f 总位数 偏置值
单精度 1 8 23 32 7FH/127
双精度 1 11 52 64 3FFH/1023

float和double的基数都为2

隐藏位:对于规格化的二进制浮点数,尾数的最高位总是1,未来能使尾数多表示一位有效位,将这个1隐藏,称为隐藏位,因此23位尾数实际上表示了24位有效数字。IEEE754规定隐藏位1的位置在小数点之前。

偏置:在IEEE754标准中,指数用移码表示,但偏置不是通常n位移码所用的\(2^{n-1}\)而是\(2^{n-1}-1\).

规格化单精度浮点数的真值:

\[(-1)^s\times 1.f \times 2^{e-127} \]

规格化双精度浮点数的真值:

\[(-1)^s\times 1.f \times 2^{e-1023} \]

IEEE754规定的特殊意义浮点数

  • \(+0/-0\):阶码全0,尾数全0
  • \(+\infty/-\infty\):阶码全1,尾数全0
  • NaN:阶码全1,尾数非0
  • 非规格化数:阶码全0,尾数非0

定点、浮点表示的区别

  • 数值的表示范围:若定点数和浮点数的字长相同,则浮点表示法所能表示的数值范围远大于定点表示法。
  • 精度:对于字长相同的定点数和浮点数来说,浮点数虽然扩大的表示范围,但精度降低。
  • 数的运算:浮点数包括阶码和尾数两部分,运算时不仅要做尾数的运算,还要做阶码的运算,而且运算结果要求规格化,所以浮点数运算比定点数运算复杂。
  • 溢出问题:在定点运算中,当运算结果超出数的表示范围时,发生溢出;在浮点运算中,运算结果超出尾数表示范围却不一定溢出,只有规格化后阶码超出所能表示的范围时,才发生溢出。

浮点数的加减法运算


对阶

  • 对阶的目的是使两个操作数的小数点位置对齐,即使得两个数的阶码相等。
  • 对齐原则:小阶码向大阶码看齐,将阶码小的尾数右移1位,阶码加1,直至两个数的阶码相等。

尾数右移时,若舍弃有效位会产生误差,影响精度。为了保证运算的精度,尾数右移时,低位移出保留,并继续参加尾数部分的运算。

尾数加减

  • 对阶后的尾数按定点原码小数的加(减)运算规则进行运算。
  • 在进行尾数加减时,必须将隐藏位还原到尾数部分。
  • 运算后的尾数补一点给是规格化的,因此还需要进一步进行规格化处理

舍入

为保证运算精度,一般将移出的部位低位保留下来,参加中间过程的运算,最后再将运算结果进行舍入,还原成IEEE754格式。

IEEE754提供了四种可选的舍入模式:

  • 就近舍入:舍入为最近的可表示数。
  • 正向舍入:取右边最近的可表示数。
  • 负向舍入:取左边最近的可表示数。
  • 截断法:截取所需位数,丢弃后面的所有位。该方法等价于取更接近原点的可表示数。

溢出判断

若一个正整数超过了最大允许值(127/1023)则发生指数上溢,产生异常;
若一个负指数超过了最小允许值(-149/-1074),则发生指数下溢,通常按机器零处理。

尾数舍入(溢出):数值很大的尾数舍入时,可能因为末位加1而发生尾数溢出,此时需要通过右规调整尾数和阶码。

右规(上溢):右规时阶码加1,若加1后阶码全1,则发生指数上溢。(IEEE规定指数全1尾数非零为NAN)

左规(下溢):左规时阶码减1,阶码全0则发生指数下溢。

对于非规格化数的情况,尾数为0.0...01时,指数的最小允许范围是:-126-23=-129或-1022-52=-1074

C语言中的浮点类型


不同类型数的混合运算时,遵循的原则是“类型提升”,即较低类型转换为较高类型。

  • 整型:char->int->long->(double,当和浮点数运算时)
  • 浮点型:float->double

转换时的精度、范围分析

  1. int型转换为float型:不会发生溢出,但float尾数连隐藏位共24位,当int型的第24~31位非0时,无法精确转换成24位浮点数,需舍入处理,影响精度。

  2. int型/float型转为double型:由于double型的有效位数更多,因此能保留精确值。

  3. double型转为float型:float表示范围更小,因此大数转换时可能发生溢出;float尾数有效尾数更少,高精度数转换时发生舍入。

  4. float型/double型转int型:由于int型没有小数部分,因此数据会向0方向截断(仅保留整数部分),因此发生舍入。int型表示范围更小,大数转换时可能会溢出。

数据的大小端和对齐存储


  • 在存储数据时,数据从低位到高位可以按从左到右排列,也可以按照从右到左排列。

  • 通常用最低有效字节(LSB)和最高有效字节(MSB)来分别表示数据的低位和高位。

机器数 01 23 45 67H,其最高有效字节MSB=01H,最低有效自己LSB=67H

  • 根据数据中各字节在连续字节序列中的排列顺序不同,可以采用两种排列方式:大端方式和小端方式。

  • 大端方式:先存储高位字节,后存储低位字节。字中的字节顺序和原序列的相同。

  • 小端方式:先存储低位字节,后存储高位字节。字中的字节顺序和原序列的相反。

边界对齐方式

  • 数据按边界对齐方式存放要求其存储地址是自身大小的整数倍,半字地址一定是2的整数倍,字地址一定是4的整数倍。

  • 当所存数据不满足上述要求时,可通过填充空白字节使其符合要求

字地址中的字指代4字节。

结构体对齐
在C语言中的struct类型中,“边界对齐”有两个重要要求:

  1. 每个成员按其类型的大小对齐,不同类型的对齐值不同;
  2. struct的长度必须是成员中最大对齐值的整数倍(不够就补空字节)
struct A{
    int a; 
    char b;
    short c;
} // sizeof(A) = 8

struct B{
  char b;
  int a;
  short c;
} // sizeof(B) = 12
description

标签:阶码,运算,下溢,尾数,浮点数,原理,上溢,计算机
From: https://www.cnblogs.com/SXWisON/p/18375516

相关文章

  • 基于python+flask框架的社区团购平台(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能设备的普及,电子商务已渗透到人们生活的方方面面,社区团购作为一种新兴的电商模式,近年来迅速崛起并受到广泛......
  • 基于python+flask框架的基于推荐系统的电影网站系统小程序前端(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,互联网已成为人们获取信息和娱乐的主要途径之一,电影作为大众喜爱的文化消费形式,其在线观看和推荐需求日益增长。随着电影产业......
  • 基于python+flask框架的基于WEB的咖啡销售系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在快节奏的现代生活中,咖啡已成为许多人日常生活中不可或缺的饮品,不仅因为其独特的口感和提神醒脑的功效,更因其承载了社交、休闲等多种文化......
  • 基于python+flask框架的网上电影购票系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和智能设备的普及,线上娱乐消费已成为人们日常生活的重要组成部分。电影作为深受大众喜爱的文化娱乐形式之一,其购......
  • sentinel-服务接入原理
    通过sentinel前世今生介绍,我们知道了sentinel流控主要是依赖sentinel-core,但是我们生产环境往往需要动态更新流控规则所以需要集成nacos、zookeeper、redis、mysql、等中间存储。配置的复杂性和规则的复杂性我们需要可视化的方式对规则进行管理,我们需要集成dashboard。这些senti......
  • 基于Node.js+vue四川省非物质文化遗产之传统美术数字平台设计与实现(程序+论文+开题报
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在全球化与现代化的浪潮中,非物质文化遗产作为民族文化的瑰宝,正面临着传承与保护的严峻挑战。四川省,作为中华文化的重要发源地之一,拥有丰富的非物质文化遗产......
  • 基于python+flask框架的力悦月子会所管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景近年来,随着人们生活水平的提高和健康意识的增强,母婴健康服务行业迎来了前所未有的发展机遇。力悦月子会所作为高端母婴护理服务的代表,其服......
  • 基于python+flask框架的基于web的物流管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球经济的飞速发展和电子商务的蓬勃兴起,物流行业作为连接生产与消费的关键环节,其重要性日益凸显。传统物流管理模式在应对海量数据处......
  • 基于python+flask框架的中医院信息管理系统 (开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的不断进步和人们对健康需求的日益增长,中医院作为传统医学的重要载体,其管理效率和服务质量成为提升患者满意度和医疗效果的关......
  • 基于python+flask框架的基于云平台的展馆综合管理系统开发与设计(开题+程序+论文) 计算
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,云计算技术已成为推动各行业数字化转型的重要力量。在展览行业,传统的展馆管理模式面临着效率低下、信息共享不足、......