计算机系统基础笔记(10)——浮点数

前言

结合第四篇观看 效果更好^^
数值型分为两类

  • 定点数
    • 整数
    • 小数
  • 浮点数
    注意:小数点不用占用二进制位

第一部分 编码

1.小数的二进制表示

  • 位置计数法:小数点左边的权重是正指数,右边的数是负指数,如图
    在这里插入图片描述
    由此可知,数字形如 0.11111…… (二进制数) 是一个十分接近但小于1的数字
  • 由于这种缘故 可表示的数字精度有限,只能精确的表示 x/2^k 这种形式的数字

2.编码有理数

  • 采用 v = x × 2^𝑦 的方式
    • 这种方式在v的绝对值远大于0或远小于1时有用

3.浮点数的表示(重点)

  • 数字的形式表示
    • s 符号位:符号位 决定正负
    • M 尾数:决定数字的精度,一个小数,通常在[1.0,2.0) 或 [0.0, 1.0)
    • E 阶码:决定数字的范围
      在这里插入图片描述
  • 编码方式
    • 符号位-阶码-尾数
      在这里插入图片描述
  • 几种精度的浮点数(常考32位)
    • 单精度:32位
      在这里插入图片描述

    • 双精度:64位
      在这里插入图片描述

    • 扩展精度:80位(仅Intel支持)
      在这里插入图片描述

4.IEEE 754 标准(浮点数编码)

规格化数

-当 exp ≠ 000…0 且 exp ≠ 111…1 时

  • 阶码ExpE = Exp – Bias
    • E :真值 即真实值乘以的2的指数
    • Bias: bias = 2^k‐1 – 1, k是exp的位宽(因此可知这是固定的,32位是127,64位是1023
  • 尾数MM = 1.xxx….x (二进制数)
    • 包含一个隐式前置的1,即小数点前面的1(这个1存在但不会记录到编码上,相当于节省了一位^^)
    • xxx…x: 为frac域的各位的编码
    • 最小值:frac = 000…0 (M = 1.0 )
    • 最大值:frac = 111…1 (M = 2.0 - ε)(上面已经说过了,这个会无限的接近于1,加上小数点前的1就是2-ε)

举个例子吧~
我们现在有一个浮点数
数值为float f = 15213.0

  • 转化成二进制就是
    15213 = 11101101101101
    = 1.1101101101101 × 2 ^13

从这里就可以得到尾数和阶码的信息了

  • 尾数是1.1101101101101
    补上单精度的位数并去掉前置1就是尾数
    11011011011010000000000

  • 阶码部分
    真实值E是13(2的指数)
    Bias是127(32位)
    因此Exp是127+13 = 140
    转换成二进制就是 10001100

而符号位为0(正数)
因此我们有以下编码
在这里插入图片描述

非规格化数
  • 当 exp = 000…0 时
  • 阶码
    • E = - Bias + 1
  • 尾数M = 0.xxx…x(二进制)
    • 包含一个隐式前置的0
    • xxx…x: 为frac域的各位的编码
  • 当 exp = 000…0, 且 frac = 000…0 时
    • 注意区别:+0 和 -0区别
    • 表示 0
  • 当 exp = 000…0, 且 frac ≠ 000…0 时
    • 非常接近于0.0的数字
    • 等间距的
特殊值
  • 当 exp = 111…1 时
  • 当 exp = 111…1 且 frac = 000…0 时
    • 表示无穷 ∞
    • 意味着运算出现了溢出
    • 正向溢出,或负向溢出
  • 当 exp = 111…1 且 frac ≠ 000…0 时
    • 不是一个数字
    • 表示数值无法确定
    • NaN
      如图,
      在这里插入图片描述
      在这里插入图片描述

第二部分 运算

在这里插入图片描述

1.几种舍入模式

这是重点

  • 向下舍入
    ◼ 舍入结果接近但不会大于实际结果
  • 向上舍入
    ◼ 舍入结果接近但不会小于实际结果
  • 向 0 舍入
    ◼ 舍入结果向 0 的方向靠近
    ◼ 如果为正数,舍入结果不大于实际结果
    ◼ 如果为负数,舍入结果不小于实际结果
向偶数舍入(重点)
  • 浮点数运算默认的舍入模式
    ◼其他的舍入模式都会统计偏差
    ◼ 一组正数的总和将始终被高估或低估
  • 适用于舍入至小数点后任何位置
    ◼ 当数字正好处在四舍五入的中间时
    ◼ 向最低位为偶数的方向舍入

下面是例子
就是四舍五入的偶数版(一般是按照四舍五入,如果在中间的话就向偶数方向舍入
在这里插入图片描述

不同舍入之间的比较

我们可以看一下不同舍入之间的差异
第一行是向偶数舍入
第二行是向零舍入
第三四行向下和向上舍入
在这里插入图片描述

2.基本思想

  • 首先计算出精确的值
  • 将结果调整至目标的精度
    ◼ 如果阶码值过大,可能会导致溢出
    ◼ 可能会进行舍入以满足尾数的位宽

3.浮点数乘法

(-1)s1 M1 2E1 × (-1)s2 M2 2E2

  • 精确的结果是(-1)s M 2E
    • 符号位 (Sign) s:s1^s2
      尾数 (Significand) M:M1 ×M2
      阶码 (Exponent) E:E1 + E2
  • 修正
    • 符号位 (Sign) s:s1^s2
      尾数 (Significand) M: M1 ×M2
      阶码 (Exponent) E:E1 + E2
      在这里插入图片描述

4.浮点数加法

(-1)s1 M1 2E1 × (-1)s2 M2 2E2(假设E1 > E2)

  • 精确的结果 (Exact Result):(-1)s1 M 2E
    ◼ 符号位 s 和尾数 M:有符号数对齐后相加的结果
    ◼ 阶码 (Exponent) E:E2
  • 修正
    • 如果M ≥ 2,右移M,并增大E的值
      如果M < 1,左移M k位,然后E减去k
      如果E超出范围,溢出
      对M进行舍入以满足frac的位宽精度要求

5.C语言中的浮点数

  • C语言中支持两种精度的浮点数(float单精度 double 双精度)
  • 类型转换
    • double/float → int
      • 截断尾数
      • 向0舍入
      • 越界和NaN的情况通常设置为Tmin Tmax
    • int → double
      • 精准转换 因为int的位宽小于53(double)
    • int → float
      • 浮点数舍入模式(上面介绍的)

下面是例子
在这里插入图片描述
各类型的强制转换结果如下 解释在右^^
在这里插入图片描述

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

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

相关文章

MySQL数据库(二)和java复习

一.MySQL数据库学习(二) (一).DQL查询数据 DQL&#xff08;Data Query Language&#xff09;是用于从数据库中检索数据的语言。常见的 DQL 语句包括 SELECT、FROM、WHERE、GROUP BY、HAVING 和 ORDER BY 等关键字&#xff0c;用于指定要检索的数据、数据源、过滤条件、分组方…

格式化后硬盘数据能恢复吗?硬盘数据恢复这样做!

硬盘是电脑中必备的数据存储设备&#xff0c;另外还有移动硬盘。移动硬盘存储空间非常大、性价比高、便于携带&#xff0c;给我们带来和很多便利。但是和其他存储设备一样&#xff0c;各种硬盘也会出现各种问题&#xff0c;比如常见的格式化硬盘导致数据丢失的问题。 怎么样恢复…

PHP 寿光蔬菜大棚宣传平台-计算机毕业设计源码88288

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于寿光蔬菜大棚宣传平台当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了寿光蔬菜大棚宣传平台&#xff0c;它彻底…

BPF:BCC(BPF Compiler Collection)工具集认知

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理内容涉及 BCC 工具整体介绍理解不足小伙伴帮忙指正 &#x1f603;,生活加油 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村…

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域&#xff0c;智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中&#xff0c;ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性&#xff0c;在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…

【Linux】进程3——PID/PPID,父进程,子进程

在讲父子进程之前&#xff0c;我们接着上面那篇继续讲 1.查看进程 mycode.c makefile 我们在zs_108直接编译mycode.c&#xff0c;直接运行&#xff0c;然后我们转换另一个账号来查看这个进程 我们可以通过ps指令来查看进程 我们就会好奇了&#xff0c;第二行是什么&#xff…

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中&#xff0c;除了收集cpu信息&#xff0c;我们还需要收集内存信息。在Linux中&#xff0c;获取内存信息的命令很多&#xff0c;这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…

280 基于matlab的摇号系统GUI界面仿真MATLAB程序

基于matlab的摇号系统GUI界面仿真MATLAB程序&#xff0c;输入总数量及摇号需求&#xff0c;进行随机性摇号&#xff0c;并对摇取的号码进行双重随机性数据检测&#xff0c;确定是否符合要求。程序已调通&#xff0c;可直接运行。 280 GUI人机交互 摇号系统GUI界面仿真 - 小红书…

技术前沿 |【大模型InstructBLIP进行指令微调】

大模型InstructBLIP进行指令微调 一、引言二、InstructBLIP模型介绍三、指令微调训练通用视觉语言模型的应用潜力四、InstructBLIP的指令微调训练步骤五、实验结果与讨论六、结论与展望 一、引言 随着人工智能技术的快速发展&#xff0c;视觉语言模型&#xff08;Vision-Langu…

使用SourceTree切换不同的托管平台

背景&#xff1a;sourcetree一开始绑定了gitee&#xff0c;想拉取github的项目时拉取不了 原因&#xff1a;git绑定的账号&#xff08;邮箱&#xff09;、密码不一致 解决办法&#xff1a; 重新设置账号密码 在windows种可找到下面的文件夹&#xff0c;进行删除 C:\Users\US…

5.1 实体完整性

一个表只能有一个主键约束&#xff0c;且主键约束不能取空值。 通过unique约束定义唯一性&#xff0c;为了保证一个表非主键列不输入重复值&#xff0c;可在该列定义unique约束。 primary key约束与unique约束主要区别如下。 (1)一个表只能创建一个primary key约束&#xff0…

让GNSSRTK不再难【第一天】

第1讲 GNSS系统组成以及应用 北斗导航科普动画_哔哩哔哩_bilibili 1.1 GNSS系统 1.1.1 基本概念 全球卫星导航系统&#xff08;Global Navigation Satellite System, GNSS&#xff09;&#xff0c;是能在地球表面或近地空间的任何地点为用户提供全天候的三维坐标、速度以及…

STM32-电灯,仿真

目录 前言: 一. 配置vscode 二. 新创建软件工程 三. 仿真 1.新建工程想到,选择名称和路径 2.从选中的模板创建原理图 3.不创建PCB布版设计 4.选择没有固件项目 5.完成 四.源码 五. 运行效果 六. 总结 前言: 这篇主要是配置vscode和创建仿真,和点灯的完整代码,欢迎大…

在Windows上用Llama Factory微调Llama 3的基本操作

这篇博客参考了一些文章&#xff0c;例如&#xff1a;教程&#xff1a;利用LLaMA_Factory微调llama3:8b大模型_llama3模型微调保存-CSDN博客 也可以参考Llama Factory的Readme&#xff1a;GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100 LLMsUnify Effi…

美琳莱卡:创新消费模式引领新零售时代

公司成立时间与定位 美琳莱卡自创立之初,便以独特的视角和前瞻性的战略定位,立足于消费市场的变革前沿。公司成立于2024年,正值全球数字化浪潮蓬勃兴起,消费升级趋势日益明显之际。美琳莱卡敏锐地捕捉到这一时代机遇,将自身定位为创新消费模式的引领者,致力于通过线上线下高度…

攻防演练之-网络集结号

每一次的网络安全攻防演练都是各个安全厂商期待的网络安全盛会&#xff0c;因为目前的安全生态导致了只有在网络安全攻防演练期间&#xff0c;网络安全的价值才会走向台前&#xff0c;收到相关方的重视。虽然每一次都会由于各种原因不能如期举行&#xff0c;但是这一次的推迟总…

idea最新专业版安装+maven配置教程!

本教程适用于 J B 全系列产品&#xff0c;包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、CLion、AppCode 等。 &#xff08;直接复制&#xff0c;拿走不谢&#xff09; 9H1390TRAK-eyJsaWNlbnNlSWQiOiI5SDEzOTBUUkFLIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5rA5rS7I…

MySQL之查询性能优化(七)

查询性能优化 排序优化 无论如何排序都是一个成本很高的操作&#xff0c;所以从性能角度考虑&#xff0c;应尽可能避免排序或者尽可能避免对大量数据进行排序。前面已经提到了&#xff0c;当不能使用索引生成排序结果的时候&#xff0c;MySQL需要自己进行排序&#xff0c;如果…

【传知代码】上下位关系自动检测方法(论文复现)

前言&#xff1a;在信息爆炸的时代&#xff0c;我们每天都沉浸在海量的数据和信息中。随着互联网技术的飞速发展&#xff0c;如何从这些信息中准确、高效地提取出有用的知识&#xff0c;成为了当下研究的热点。其中&#xff0c;上下位关系&#xff08;也称为层级关系或种属关系…

vscode 中 eslint 无效?npm init 是什么?

vscode 中 eslint 无效 我想要给一个项目添加 eslint&#xff0c;按照 eslint 官方指南操作&#xff1a; npm init eslint/configlatest自动安装了相关依赖并创建配置文件 eslint.config.mjs。 按理说&#xff0c;此刻项目应该已经配置好 eslint 了。但是我的编辑器 vscode …