计算机系统·浮点数

news2025/1/17 6:06:21

浮点数

理解含有小数值的二进制数

定点表示方法

十进制:以小数点为分界线,小数点左边数字的权重是10的正幂,小数点右边数字的权重是10的负幂。如图所示
在这里插入图片描述
二进制:小数点左边数字的权重是2的正幂,小数点右边数字的权重是2的负幂。如图所示,倒数第二位应为 b − n + 1 b_{-n+1} bn+1
在这里插入图片描述
缺点:无法表示非常大的数

IEEE浮点数表示

公式: V = ( − 1 ) s ∗ M ∗ 2 E V = (-1)^{s} * M * 2^{E} V=(1)sM2E
以单精度浮点数为例来理解二进制位与浮点数的关系
C语言中的float占4个字节,32bits,被划分为三个字段:

  • s:最高位31位表示符号位,当s=0,表示正数;当s=1,表示负数
  • exp:从30位到23位,8个二进制位与阶码的值E相关
  • frac:剩余的23位与位数M相关
    具体表示如图所示
    在这里插入图片描述
    double与float相比:阶码E字段的长度为11为,小数字段的长度为52位
浮点数数值分类
  1. 规格化的值(Normalized Values)
  2. 非规格化的值(Denornalized Values)
  3. 特殊值(Special Values)
    阶码的值决定了这个数属于哪一类
  4. 当阶码字段的二进制不全位0,且不全为1时 ,此时表示规格化的值
  5. 当阶码字段全为0时,表示的数值是非规格化的值
  6. 当阶码字段全为1时,表示的数值时特殊值
    1. 一类表示无穷大或者无穷小
    2. 一类表示不是一个数NaN
      在这里插入图片描述
浮点数数值的表示
规格化的值
阶码部分

e的取值与8个二进制位有关,取值范围: 1 < = E < = 254 1<=E<=254 1<=E<=254
阶码E的取值不等于e,而是等于e减去一个偏置值bias,即 E = e − b i a s E = e - bias E=ebias
偏置量的值与解码字段的位数是相关的:

  1. b i a s ( f l o a t ) = 2 8 − 1 − 1 = 127 bias_{(float)} = 2^{8-1}-1 = 127 bias(float)=2811=127
  2. b i a s ( d o u b l e ) = 2 11 − 1 − 1 = 1023 bias_{(double)} = 2^{11-1}-1 = 1023 bias(double)=21111=1023
    对于单精度浮点数,阶码的最小值是-126,最大值是127
    在这里插入图片描述
小数字段

尾数M被定义为1+f。二进制表示如图所示
在这里插入图片描述

公式: M = 1. f 22 f 21 . . . . . . f 1 f 0 = 1 + f M = 1.f_{22}f_{21}......f_{1}f_{0} = 1+f M=1.f22f21......f1f0=1+f
因为我们可以调整E的取值,使尾数M的取值范围为 1 < = M < = 2 1<=M<=2 1<=M<=2,既然第一位总是1,那么没有必要显示的表示出来,所以尾数M的值要加1

非规格化的值

当阶码字段的二进制位全为0时,所表示的是非规格化的值
非规格化的数有两个用途:

  • 提供数值0的表示方法
    • 当s=0,M=f=0,e=0,此时表示正零
    • 当s=1,M=f=0,e=0,此时表示负零
  • 表示非常接近0的数
    • 当阶码字段全为0时,价码E的值等于1-bias,尾数的值M等于f,不包含隐藏的1
    • 公式:
      • E = 1 − b i a s E = 1-bias E=1bias
      • M = f M = f M=f
    • 与规格化的计算不同,如图所示,白色部分是规格化在这里插入图片描述
特殊值

当阶码字段全为1,且小数字段全为0,表示无穷大的数,分为正无穷打大和负无穷大

  • 正无穷大,符号位为0
  • 负无穷大,符号位为1
    在这里插入图片描述
    运算结果不为实数或者用无穷也无法表示的情况
    NaN(Not a Number)如: s q r t ( − 1 ) sqrt(-1) sqrt(1)
    阶码字段全为1,小数字段不为0
    在这里插入图片描述
浮点数的存储与转换
int转换称float

例子:12345->12345.0
12345的二进制表示为0000 0000 0000 0000 0011 0000 0011 1001,如图所示在这里插入图片描述
由于高18位全为0,所以我们可以忽略高十八位,只关注低十四位
由规格化的表示可知: 12345 = 1.1000000111001 ∗ 2 13 12345 = 1.1 0000 0011 1001 * 2^{13} 12345=1.1000000111001213
根据IEEE的编码规则:将小数点左边1丢弃,由于单精度浮点数的小数字段长度为23,需要在末尾增加十个零,如图所示
在这里插入图片描述

因为12345 = 1.1 0000 0011 1001 * 2^13,所以阶码E=13
由规格化表示 E = e − b i a s E=e-bias E=ebias,float的bias为127
可知e=140,140的二进制表示为 1000 1100
在这里插入图片描述
符号位为0,构造完成如图所示
在这里插入图片描述

浮点运算只能近似表示实数运算

浮点数的舍入

共有四种舍入方式

  1. 向偶数舍入
  2. 向零舍入
  3. 向下舍入
  4. 向上舍入
向下舍入

总是向小舍入,如1.5 -> 1,-1.5 -> -2

向上舍入

总是向大的舍入,如1.5 -> 2 ,-1.5 -> -1

向零舍入

总是向0靠近,如1.5 -> 1,-1.5 -> -1
如图所示
在这里插入图片描述

向偶数舍入

之前的三种方法都容易导致总体因为舍入变大或变小,而向偶数舍入则不会
在这里插入图片描述
只需要考虑最低有效位数是奇数还是偶数
在这里插入图片描述
向偶数舍入也可以用于二进制数上,认为最低有效位0为偶数,1为奇数
在这里插入图片描述

浮点数加法

在这里插入图片描述
上图所示情况是因为,表达式1,将加法结果舍入3.14省略
浮点数的乘法,加法都不具有结合性,加法不具有分配性

C语言中的强制类型转换

会有精度丢失的出现
在这里插入图片描述

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

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

相关文章

免费阅读篇 | 芒果YOLOv8改进111:注意力机制CBAM:轻量级卷积块注意力模块,无缝集成到任何CNN架构中,开销可以忽略不计

&#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容&#xff0c;YOLOv8CBAM改进内容&#x1f680;&#x1f680;&am…

Exam in MAC [容斥]

题意 思路 正难则反 反过来需要考虑的是&#xff1a; (1) 所有满条件一的(x,y)有多少对&#xff1a; x 0 时&#xff0c;有c1对 x 1 时&#xff0c;有c对 ...... x c 时&#xff0c;有1对 以此类推 一共有 (c2)(c1)/2 对 (2) 符合 x y ∈ S的有多少对&#xff1a…

深度学习每周学习总结P1(pytorch手写数字识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结1. 数据导入部分2. 模型构建部分3. 训练前的准备4. 定义训练函数5. 定义测试函数6. 训练过程 0. 总结 总结: 数据导入部分&a…

Jmeter进行http接口测试

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要针对http接口进行测试&#xff0c;使用 jmeter工具实现…

Jenkins自定义镜像推送到Harbor仓库

之前Jenkins需要推送jar包到远程到目标服务器再进行构建 现在Jenkins容器内部可以直接使用Docker了 直接在Jenkins构建好推送到Harbor仓库上&#xff0c;然后不管是哪台目标服务器&#xff0c;只需要去Harbor仓库拉取镜像即可。 修改Jenkins任务 将代码检测下面的远程服务器步…

UI 学习 三 可访问性 UX

设计、交流和实现不同领域内容的易访问性决策&#xff0c;涉及到一系列考虑因素&#xff0c;以达到更容易访问的产品体验。 Material使用的框架借鉴了WCAG标准和行业最佳实践&#xff0c;以帮助任何人预测、计划、记录和实现可访问体验。 下面描述的三个阶段有助于将可视化UI…

SIMATIC C7-635西门子触摸屏维修6ES7635-2EB02-0AE3

西门子工控机触摸屏维修C7-626/P西门子控制面板维修DP Panel 6ES7626-1DG03-0AE3&#xff1b;6ES7626-2DG04-0AE3 SIMATIC HMI移动面板维修&#xff08;西门子面板&#xff09;可轻松进行电源管理与操作&#xff0c;成为移动应用的可能之选。该面板支持线缆或 Wi-Fi 通信&…

Weblogic 常规渗透测试环境

测试环境 本环境模拟了一个真实的weblogic环境&#xff0c;其后台存在一个弱口令&#xff0c;并且前台存在任意文件读取漏洞。分别通过这两种漏洞&#xff0c;模拟对weblogic场景的渗透。 Weblogic版本&#xff1a;10.3.6(11g) Java版本&#xff1a;1.6 弱口令 环境启动后…

数字孪生与智慧城市:实现城市治理现代化的新路径

随着信息技术的迅猛发展&#xff0c;智慧城市已成为城市发展的必然趋势。数字孪生技术作为智慧城市建设的重要支撑&#xff0c;以其独特的优势为城市治理现代化提供了新的路径。本文将探讨数字孪生技术在智慧城市中的应用&#xff0c;以及如何实现城市治理的现代化。 一、数字…

OJ_还是畅通工程

题干 #include <iostream> #include <vector> #include <algorithm> using namespace std;//并查集的应用&#xff1a;判断图的连通性int set[10001]; //i下标是集合数据编号,set[i]是i的父亲的编号 //若i是根&#xff0c;可令set[i] i void InitDisjointSe…

Docker容器化技术(使用Dockerfile制作Nginx镜像)

编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像名为nginx:v1.1&#xff0c;并推送其到私有仓库。 1、基于centos7基础镜像&#xff1b; 2、指定作者为Chinaskill&#xff1b; 3、安装nginx服务&#xff0c;将提供的dest目录传到镜像内&#xff0c;并将de…

案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-先导篇)

专栏系列文章&#xff1a; 2024高级系统架构设计师备考资料&#xff08;高频考点&真题&经验&#xff09;https://blog.csdn.net/seeker1994/category_12593400.html 案例分析篇01&#xff1a;软件架构设计考点架构风格及质量属性 案例分析篇11&#xff1a;UML设计考…

YOLO学习

至少不比原来差 网格大小&#xff1a;13、26、52 不同感受野匹配 损失函数是对数 二分类

通过路由器监控,优化网络效率

路由器是网络的基本连接组件&#xff0c;路由器监控涉及将路由器网络作为一个整体进行管理&#xff0c;其中持续监控路由器的性能、运行状况、安全性和可用性&#xff0c;以确保更好的操作和最短的停机时间&#xff0c;因此监控路由器至关重要。 为什么路由器监控对组织很重要…

面试相关问题准备

一.MySql篇 1优化相关问题 1.1MySql中如何定位慢查询&#xff1f; 慢查询的概念&#xff1a;在MySQL中&#xff0c;慢查询是指执行时间超过一定阈值的SQL语句。这个阈值是由long_query_time参数设定的&#xff0c;它的默认值是10秒1。也就是说&#xff0c;如果一条SQL语句的执…

物联网技术在农药化肥行业的远程监控解决方案

物联网技术在农药化肥行业的远程监控解决方案 随着物联网技术的日益成熟&#xff0c;其在农药化肥行业的应用呈现出广阔的前景。通过物联网远程监控解决方案&#xff0c;可以实现生产、存储和施用环节的全程智能化管理&#xff0c;大大提高行业效率和环保水平。 通过物联网云…

CleanMyMac X2024永久免费的强大的Mac清理工具

作为产品功能介绍专员&#xff0c;很高兴向您详细介绍CleanMyMac X这款强大的Mac清理工具。CleanMyMac X具有广泛的清理能力&#xff0c;支持多种文件类型的清理&#xff0c;让您的Mac始终保持最佳状态。 系统垃圾 CleanMyMac X能够深入系统内部&#xff0c;智能识别并清理各种…

软件设计师:12 - 下午题历年真题

章节章节01-计算机组成原理与体系结构07 - 法律法规与标准化与多媒体基础02 - 操作系统基本原理08 - 设计模式03 - 数据库系统09 - 软件工程04 - 计算机网络10 - 面向对象05 - 数据结构与算法11 - 结构化开发与UML06 - 程序设计语言与语言处理程序基础12 - 下午题历年真题End -…

Java_12 杨辉三角 II

杨辉三角 II 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1] 示例 2: 输入: rowIndex 0 输出: [1] 示例 3: 输入: rowIndex 1 输…

llama2 代码实验记录

torchrun分布式启动&#xff0c;所以要想在云端的环境下在本地的IDE上debug&#xff0c;需要设置一下&#xff0c;具体可以参考这里&#xff0c;需要传入的路径参数全部使用绝对路径。 目录 1、传入的句子 2、tokenizer 的tokenization 3、model的主要组成部分 4、过程中自…