计算机组成原理(2)- 浮点数的存储

1、浮点数的表示方法

假设有以下小数,它表示的十进制数是多少呢?

00000000 00000000 00000000 1010.1010

1*2^3 + 1*2^1 + 1*2^-1 + 1*2^-3 = 10.625

1010.1010可以用科学计数法来表示为1.0101010 * 2^3。关于科学计数法再举个例子0.10101用科学计数法表示为1.10101 * 2^-1

计算机中浮点数的存储方法如下:
请添加图片描述

32位被划分为三个部分:1位符号、8位指数以及23位尾数。这里的符号指数尾数都是什么呢?

  • 符号就是浮点数的正负,正数为0,负数为1;
  • 指数位是科学计数法表示的浮点二进制数的指数,由于指数可能有正负,这里的处理方式是将指数加上127再存到这8位中,相应的读取时要减去127;
  • 尾数位是科学计数法表示的浮点二进制数的小数部分;
  • 由于科学计数法第一位一定是1,所以这一位存储时被舍弃,读取的时候会加上。

10.625为例,它的二进制数表示为1.0101010 * 2^3,它在计算机中存储为:
请添加图片描述
反过读取其表示的值:
(-1)^0 * (1 + 0.010101) * 2^(130 - 127) = 1.010101 * 2^3 = 0b1010.101

要注意这里的2^3并不是8,指的是小数点向后移动3位!如果是1.0*2^3,它表示小数点向右移动三位,表示的二进制数为0b1000,对应的十进制数为2^3=8


2、浮点数的范围

浮点数能表示的值的范围是多少呢?

这里有几个规定:

指数尾数binary
2550+/- ∞0 11111111 00000000000000000000000
255非0NaN(not a number)0 11111111 00000000000000000000001

指数为255对应的值是无穷以及NaN,所以浮点数指数不能取到255,其范围是-127 ~ 127。值的大小取决于指数,所以二进制范围约为-(1*2^127) ~ (1 * 2^127),十进制范围约为-2^127 ~ 2^127

以上是浮点是能表示的正负的最大值,它还有一个能表示的最小范围区间:

指数位为0,尾数为最后一位为1,是浮点数最小的时候:0 00000000 00000000000000000000001,这时候它所表示的二进制数为(1 + 0.00000000000000000000001) * 2 ^ -127,转换为十进制数约等于2^-127,这就是浮点数所能表示的最小值。

用一个数轴来表示32位浮点数能够表示的十进制范围:
请添加图片描述


3、浮点数的精度

网上很多博文说浮点数的精度为6 - 7位,看了很多文章始终不解这是如何得出的。

明明浮点数能表示的十进制最小值可以大约是2^-127,转换一下是10^-38,你说它的精度是6-7位还对吗?

想了很久,我的理解是这样:

浮点数不为0最小值,或者说是最小单位长度为:
0 00000000 00000000000000000000001

对应的二进制数为(1 + 0.00000000000000000000001)*2^-127,而这个值的精度取决于括号中的0b0.00000000000000000000001

由于32位浮点数只有23位表示尾数,指数大于等于0的情况下,小数部分最小是0b0.00000000000000000000001,对应的十进制数为2^-23(10^-6.9),所以精度是小数点后面6位

以上说法还比较抽象,这里举个例子,
0 01111111 00000000000000000000001 = (1 + 0.00000000000000000000001) * 2^0 = 0b1.00000000000000000000001
0 01111111 00000000000000000000010 = (1 + 0.00000000000000000000001) * 2^0 = 0b1.00000000000000000000010
0 01111111 00000000000000000000011 = (1 + 0.00000000000000000000001) * 2^0 = 0b1.00000000000000000000011

每次变化都是以最小单位0b0.00000000000000000000001来变化,而这个值对应的十进制数也就是2^-23约为10^(-6.9),所以说指数大于等于0的情况下精度为6位。


以上是我对浮点数的理解,如果错误欢迎指出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app:模态框的实现(弹窗实现)

效果图 代码 标签 <template><view><!-- 按钮用于触发模态框的显示 --><button click"showModal true">显示模态框</button><!-- 模态框组件 --><view class"modal" v-if"showModal"><view cla…

网红项目AutoGPT源码内幕及综合案例实战(三)

AutoGPT on LangChain PromptGenerator等源码解析 本节阅读AutoGPT 的prompt_generator.py源代码,其中定义了一个PromptGenerator类和一个get_prompt函数,用于生成一个提示词信息。PromptGenerator类提供了添加约束、命令、资源和性能评估等内容的方法,_generate_numbered_l…

线性表之顺序表

在计算机科学中&#xff0c;数据结构是非常重要的基础知识之一。数据结构为我们提供了组织和管理数据的方法和技巧&#xff0c;使得我们可以高效地存储、检索和操作数据。而顺序表作为数据结构中最基本、最常用的一种存储结构&#xff0c;也是我们学习数据结构的第一步。 本文将…

QT: 完成服务器的实现

1> 思维导图 2> 手动完成服务器的实现&#xff0c;并具体程序要注释清楚 Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QMessageBox> //…

jMeter使用随记

参数化BodyData 先制作参数文件 再设置一个csv data set config 最后在body data里面写上参数${xxxxx}

Stable diffusion 和 Midjourney 怎么选?

通过这段时间的摸索&#xff0c;我将和你探讨&#xff0c;对普通人来说&#xff0c;Stable diffusion 和 Midjourney 怎么选&#xff1f;最重要的是&#xff0c;学好影视后期制作对 AI 绘画创作有哪些帮助&#xff1f;反过来&#xff0c;AI 绘画对影视后期又有哪些帮助&#xf…

【docker】docker部署nginx

目录 一、步骤二、示例 一、步骤 1.搜索nginx镜像 2.拉取nginx镜像 3.创建容器 4.测试nginx 二、示例 1.搜索nginx镜像 docker search nginx2.拉取nginx镜像 docker pull nginx3.创建容器&#xff0c;设置端口映射、目录映射 # 在root目录下创建nginx目录用于存储nginx数据…

error:0308010C:digital envelope routines::unsupported(Vue2报错)

原因:node.js版本过高&#xff0c; 解决方案&#xff0c;在终端输入以下命令 set NODE_OPTIONS--openssl-legacy-provider 然后再package.json里面添加一行 "dev_t": "set NODE_OPTIONS\"--openssl-legacy-provider\" & npm run dev\n" 然后…

【Linux命令200例】用ln创建链接文件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

windows 删除无法删除的文件

有两种原因&#xff1a; 文件被占用文件无权限 解决方案 通用解决方案是进入安全模式进行删除 安全模式&#xff1a; 不会启动非必要的进程有最高的系统权限 进入系统配置 安全引导&#xff0c;重启 删除文件 修改系统配置为正常启动 重启

[JavaWeb]SQL介绍-DDL语句

SQL介绍-DDL语句 一.SQL简介1.简介2.SQL通用语法3.SQL语言的分类 二.DDL-操作数据库与表1.DDL操作数据库2.DDL操作表①.查询表(Retrieve)②.创建表(Create)③.修改表(Update)④.删除表(Delete) 一.SQL简介 1.简介 SQL: Structured Query Language–结构化查询语言用来操作关系…

PCB封装设计指导(十五)验证封装的正确性

PCB封装设计指导(十五)验证封装的正确性 封装建立好之后,我们需要验证封装是否能够正常的放入PCB文件中,最好最直接的办法就是直接放入PCB中来验证。 具体操作如下 任意新建一个空白的PCB文件点击File 选择NEW

JAVA基础多线程-模拟线程死锁以及预防和避免死锁

引言 线程死锁描述的是这样一种情况&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 一&#xff0c;模拟死锁 示例代码&#xff1a; public class LockT1 {Object o …

SciencePub学术 | 物联网类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 物联网类重点SCIE&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 物联网类重点SCIE&EI 【期刊简介】IF&#xff1a;7.5-8.0&#xff0c;JCR1区&#xff0c;中科院1/2区TOP&#xff1b; 【出版社…

【JAVASE】顺序和选择结构

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 顺序和选择 1. 顺序结构2. 分支结构2.1 …

Could not locate supplied template: react+ts搭建

1. reactts创建 我们在是用下create-react-app之前要下载一下 npm install create-react-app -g使用一下命令创建ts的react框架 create-react-app my-app --scripts-versionreact-scripts-ts 2. 遇见问题 我们用以上创建之后会提示一段代码选择“Y”之后发现我们创建的项目…

LangChain Agents深入剖析及源码解密上(一)

LangChain Agents深入剖析及源码解密上(一) LangChain Agents深入剖析及源码解密上 Agent工作原理详解 本节会结合AutoGPT的案例,讲解LangChain代理(Agent)为核心的内容。我们前面已经谈了代理本身的很多内容,也看了绝大部分的源代码,例如:ReAct的源代码,还有mrkl的源代…

windows11打不开任务管理器,

目录 第一章、win11系统任务管理器打不开&#xff1f;第二章、解决方式修改注册表 友情提醒&#xff1a; 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接跳转到文章指定位置。 第一章、win11系统任务管理器打不开&#xff1f; Win11任务管理…

Python web实战 | 用Docker部署Django项目

1. Docker与Django 为什么要使用Docker来部署Django项目&#xff1f;这是因为Docker提供了一个独立、一致的环境&#xff0c;让开发者可以在任何地方运行他们的应用程序&#xff0c;而不用担心环境配置问题。这就像是你有一个可以装下所有工具和材料的宝箱&#xff0c;无论你走…

AI数字人:金融数字化转型的“关键先生”

今年年初ChatGPT的火热&#xff0c;在全球掀起一阵生成式AI&#xff08;AIGC&#xff09;热潮。国外的OpenAI、国内的百度等企业&#xff0c;都在AIGC上强力布局。 各种应用场景中&#xff0c;AIGC助力的数字人引起了市场注意。 事实上&#xff0c;数字人不是个新鲜事。早在1…