5.浮点数及其运算

news2024/10/6 12:19:15

目录

一. 浮点数的表示

(1)表示

(2)规格化

二. IEEE 754标准

三. 浮点数的运算

(1)步骤

(2)关于舍入

四. C语言的强制类型转换


一. 浮点数的表示

(1)表示

定点数可表示的数字范围有限,但我们不能无限制地增加数据的长度。

浮点数:由阶码和尾数构成:

阶码E反映浮点数的表示范围及小数点的实际位置;尾数M的数值部分的位数n反映浮点数的精度。

阶码:常用补码或移码表示的定点整数。尾数:常用原码或补码表示的定点小数。
例:阶码、尾数均用补码表示,求a、b的真值。a=0,01;1.1001  b=0,10;0.01001
解:a:阶码0,01对应真值+1,尾数1.1001对应真值-0.0111=-(2^{-2}+2^{-3}+2^{-4})

所以a的真值2^{-1}*-0.0111=-0.111,其中2^{-1}相当于尾数表示的定点小数算数左移一位,或小数点右移一位。

同理b的真值是2^{2}*+0.01001=+1.001.

(2)规格化

规格化浮点数:规定尾数的最高数值位必须是一个有效值。不能是0.

  • 左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位,阶码减1。(通过算数左移,阶码减1来规格化)

  • 右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10)时,将尾数算数右移一位,阶码加1。(通过算数右移阶码加1来规格化)

规格化浮点数的特点:

1.用原码表示的尾数进行规格化:规格化的原码尾数,最高数值位一定是1
正数为0.1××...×的形式,其最大值表示为0.11...1;最小值表示为0.10...0。尾数的表示范围为1/2\leq M\leq(1-2^{-n})
负数为1.1××...×的形式,其最大值表示为1.10...0;最小值表示为1.11..1。尾数的表示范围为-(1-2^{-n})\leqslant M\leqslant-1/2
2.用补码表示的尾数进行规格化:规格化的补码尾数,符号位与最高数值位一定相反(人为规定)
正数为0.1××...×的形式,其最大值表示为0.11...1;最小值表示为0.10...0。尾数的表示范围为1/2\leq M\leq(1-2^{-n})
负数为1.0××...×的形式,其最大值表示为1.01...1;最小值表示为1.00...0。尾数的表示范围为-1\leqslant M\leqslant-(1/2+2^{-n})

二. IEEE 754标准

我们首先回顾下移码的定义:移码=真值+偏置值
此处8位移码的偏置值=128D=1000 0000B,即2^{n-1}.
例如真值-127=-1111111B,移码=-1111111+ 10000000= 0000 0001
例如真值-3=-11B,移码=-11+ 10000000= 0111 1101。

现在我们把偏置值减去1,也就是127D=0111 1111B,即2^{n-1}-1.

在IEEE 754标准中,阶码用移码表示,尾数用原码表示。

规格化的短浮点数的真值为:(-1)^s\times 1.M\times2^{E-127}。隐藏表示天然的就保证了规格化。阶码真值=移码-偏移量。

例1:将十进制数-0.75转换为IEEE 754的单精度浮点数格式表示。

解:(-0.75)_{10}=(-0.11)_{2}=(-1.1)_2\times 2^{-1},进行了右规。
数符=1,尾数部分= .1000000.....(隐含最高位1)

阶码真值=-1,单精度浮点型偏移量=127D,移码=阶码真值+偏移量=-1+1111111=0111 1110(凑足8位,当然也可以先10进制计算-1+127=126,126转换成二进制就是0111 1110)
所以转换结果是1 01111110 10000000000000000000000

例2:IEEE 754的单精度浮点数C0 A0 00 00H的值时多少。

解:C0 A0 00 00H→1100 0000 1010 0000 0000 0000 0000 0000

数符=1→是个负数
尾数部分=.0100....(隐含最高位1)→尾数真值=(1.01)_2

移码=10000001,若看作无符号数=129D,单精度浮点型偏移量=127D
阶码真值=移码-偏移量=1000 0001-111 1111= (0000 0010)_2=(2)_{10}

浮点数真值=(-1.01)_2\times 2^2=-5.0.

IEEE 754单精度浮点型能表示的最小绝对值、最大绝对值是:
最小绝对值:尾数全为0,阶码真值最小-126,对应移码机器数0000 0001此时整体的真值为(1.0)_2\times 2^{-126}
最大绝对值:尾数全为1,阶码真值最大127,对应移码机器数11111110此时整体的真值为(1.11...11)_2\times 2^{127}

最后介绍几种特殊情况,也就是阶码全1或者全0的情况:

  • 当阶码E全为0,尾数M不全为0时,表示非规格化小数±(0.xx….x)×2^{-126},此时尾数隐藏的最高位是0,阶码真值固定为-126;
  • 当阶码E全为0,尾数M全为0时,表示真值±0;
  • 当阶码E全为1,尾数M全为0时,表示无穷大;
  • 当阶码E全为1,尾数M不全为0时,表示非数值“NaN"(Not a Number);

三. 浮点数的运算

(1)步骤

下面举一个浮点数计算的例子:

例:已知十进制数X=-5/256、Y=+59/1024,按机器补码浮点运算规则计算X-Y,结果用二进制表示,浮点数格式如下∶阶符取2位,阶码取3位,数符取2位,尾数取9位。

注意这里全部采用补码运算:

(2)关于舍入

“0”舍“1”入法:类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高数值位为1,则在尾数的末位加1。这样做可能会使尾数又溢出,此时需再做一次右规。

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

四. C语言的强制类型转换

char→int →long→double,或float→double,范围、精度从小到大,转换过程没有损失。
而int→float可能损失精度,float→int可能溢出及损失精度。
int:表示整数,范围-2^{31}2^{31}-1,有效数字32位;
float:表示整数及小数,范围\pm [2^{-126},2^{127}\times(2-2^{-23})],有效数字23+1=24位。

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

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

相关文章

Kali无线网卡无法识别

啊莫,该不会有人Kali系统识别不了自己的无线网卡吧! 环境:本来用作监听功能的3037芯片无线网卡,自己胡乱调,一不小心调试成了物理网卡的功能,变成了WLAN2网卡,结果用在了Windows系统上!如果你也是这样,点开你的网络适配器看看吧! 解决思路:1.删驱动 删除Windows上的…

海云安发布国内首款融合AI大语言模型(LLM)的源代码检测平台SCAP++

继ChatGPT发布后,如何将大语言模型技术与各个领域结合应用引起了广泛的关注与探讨。随着这股AI浪潮的兴起,谷歌、微软、百度等公司也纷纷推出了自己的大语言模型,并且在机器翻译、文本摘要、情感分析、对话系统、问答系统等多个领域得到了广泛…

新发布的Java使用率均超Java8

Java 软件供应商 Azul 发布了首份年度 Java 现状调查报告,基于对全球 2062 名 Java 专业人士和基于 Java 的应用程序用户进行的调查。 Java 软件供应商 Azul 发布了首份年度 Java 现状调查报告,基于对全球 2062 名 Java 专业人士和基于 Java 的应用程序…

高等数学教材重难点题型总结(三)函数与极限

首先是考研大纲包含的内容: 1.理解并会用罗尔(Rolle)定理、拉格朗日(Lagrange)中值定理和泰勒(Taylor)定理,了解并会用柯西(Cauchy)中值定理. 2.掌握用洛必达法则求未定式极限的方法. 3.理解函数的极值概念,掌握用导数判断函数的单调性和求函…

报错信息Update your application‘s configuration

在使用Maven项目时,有一个报错信息是:Update your applications configuration 这类问题,就是我们的application.yml文件 或者 application.properties文件 内容哪里写错了 我的问题是格式对齐方式出错,如下: 修改过后…

Rocky Linux 配置邮件发送

Rocky Linux 配置邮件发送 使用自己的有邮箱发送 第一步-开启STMP授权 首先要开启STMP授权码,以QQ邮箱为例 第二步-下载安装包 说明一点不用命令行安装也可以,在命令行中输入会提示你是否安装s-nail,一直y即可 mail下载必须要的安装包 …

windowCPU虚拟化已禁用解决方案

windowCPU虚拟化已禁用解决方案 1. 前言 window电脑要安装Docker或者VMware虚拟机就需要开启windows自身的虚拟化功能,除了在设置上要开启Hyper-V只要还需要开启CPU的虚拟化功能,而CPU的虚拟化则需要通过进入BIOS设置中开启 2. 检查是否开启了虚拟化功…

springboot actuator:开放全部(部分)端点、端点映射、端点保护

目录 开放全部端点(不安全): 开放部分端点 端点映射 端口保护 1、 添加Spring Security依赖: 2、Spring Security简单配置类: 3、application.yml配置规则 4、写一个简单的controller 5、简单登录页面 目…

探索Linux世界:从基础到高级

标题 探索Linux世界:从基础到高级 🚀第一章:Linux入门篇第二章:掌握Linux基础命令第三章:文件操作的艺术第四章:征服vi/vim编辑器第五章:掌握Linux全部命令 文末赠书 博主 默语带您 Go to New W…

户外台灯设计:照亮你的户外空间

在一个温暖的夏夜,能够在户外享受美味的晚餐是一种特殊的愉悦。这种露天用餐的体验不仅让你感受大自然的美丽,还提供了独特的放松感。为了让这个时刻更加难忘,户外台灯的用途与设计至关重要。 户外台灯能够创造出温馨的氛围,为用餐…

关灯游戏及扩展

7.8 图形界面应用案例——关灯游戏 题目: [案例]游戏初步——关灯游戏。 关灯游戏是很有意思的益智游戏,玩家通过单击关掉(或打开)一盏灯。如果关(掉(或打开)一个电灯,其周围(上下左右)的电灯也会触及开关,成…

Hadoop架构、Hive相关知识点及Hive执行流程

Hadoop架构 Hadoop由三大部分组成:HDFS、MapReduce、yarn HDFS:负责数据的存储 其中包括: namenode:主节点,用来分配任务给从节点 secondarynamenode:副节点,辅助主节点 datanode:从节点&#x…

Linux编写一个极简版本的Shell

Linux编写一个极简版本的Shell 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容在Linux环境下&#xff…

二十五、W5100S/W5500+RP2040树莓派Pico<Modebus TCP Server示例>

文章目录 1 前言2 简介2 .1 什么是Modbus TCP?2.2 Modbus TCP指令介绍2.3 请求数据过程2.4 Modbus TCP协议优点2.5 Modbus TCP应用场景 3 WIZnet以太网芯片4 Modbus TCP示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意…

nacos做服务配置和服务器发现

一、创建项目 1、创建一个spring-boot的项目 2、创建三个模块file、system、gateway模块 3、file和system分别配置启动信息,并且创建一个简单的控制器 server.port9000 spring.application.namefile server.servlet.context-path/file4、在根目录下引入依赖 <properties&g…

Maven-依赖管理机制

一、背景和起源 依赖管理是Maven的一个核心功能。管理单个模块项目的依赖相对比较容易&#xff0c;但是如果是多模块项目或者有几百个模块的项目就是一个巨大的挑战。 如果手动构建项目&#xff0c;那么就先需要梳理各个模块pom中定义的依赖和版本&#xff0c;然后进行下载到本…

C++模拟实现set和map

1.看源码&#xff0c;简单了解原码的set和map类的结构 1.看类的私有成员和类模板的参数&#xff1a; 看下面我画的一些框&#xff0c;再结合上面的看一下&#xff0c;会有什么疑惑呢&#xff1f; 一般我们知道编译器底层的代码会很简洁&#xff0c;不会多创建无意义的内容&am…

【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过PDO跑循环同步位置模式详解

本教程将指导您在Ubuntu操作系统下使用PDO来配置和控制PMM60系列一体化伺服电机以实现循环同步位置模式。我们将介绍必要的步骤和命令&#xff0c;以确保您能够成功地配置和控制PMM系列一体化伺服电机。 一、准备工作 在正式介绍之前还需要一些准备工作&#xff1a;1.装有lin…

环保壁炉:酒精壁炉的生态优势

环保已经成为一个备受重视的话题。我们都希望采用更环保的能源&#xff0c;以减少对地球的影响。而酒精壁炉作为一种新型的取暖方式&#xff0c;正受到越来越多人的喜爱&#xff0c;因为它们代表了一种清洁能源的选择。 酒精壁炉的独特之处在于它们使用酒精作为燃料。这种酒精…

NFT数字藏品(交易平台)系统开发

随着数字技术和区块链技术的发展&#xff0c;NFT数字藏品交易平台系统开发逐渐成为了一个热门话题。NFT&#xff0c;即非同质化代币&#xff0c;可以用来代表独一无二的数字资产&#xff0c;如图片、音频、视频等&#xff0c;在数字世界中具有极高的价值。本文将介绍NFT数字藏品…