浮点数二进制制科学计数法理解

news2024/10/19 14:35:53

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu

1. 引言

对于浮点数,主要是单精度-float、双精度-double两种类型。

对于浮点类型,我们知道其采用科学计数法,准确来说应该是二进制科学计数法。
为什么准确说是是二进制科学计数法,而不是称为科学计数法?

2. 数学书中的科学计数法

我们已知,在数学书上学习到科学计数法,也即10进制时的科学计数法。

科学计数法的特点是:±[1-9].[0-9]… * 10n
小数点前的数字是需要大于0,并且小于指数的底数10,范围是0<abs(x)<10,取值的话就是±[1-9]。

表达123.456,科学计数法的表达是唯一的:
1.23456 * 102

注意不能是0.123456 * 103,因为科学计数法要求是小数点前有值的,且是[1-9]。

再比如,表达这个值0.00123的时候,科学计数法表达的唯一是,
1.23 * 10-3

同样的道理,这个也不能表达成 0.123 * 10-2,虽然值是一样的,但不符合科学计数法的要求—“小数点前有值的,且是±[1-9]”。

3. 二进制科学计数法

对于计算机里的浮点数来说,采用的是二级制科学计数法,为什么是二进制科学计数法?
因为对于计算机中,浮点数的表达使用的特点是
±1.[0-1]… * 2n

对于所乘的指数,底数是2,而不是10;所乘的指数,使用的是2的指数。
使用2的指数,那么对于科学计数法来说,小数前的数字需要大于0,并且小于底数,就只能是0<x<2,也就只有1这个取值了。
小数点后的值,也因为二进制原因,取值只有[0,1]两个取值,毕竟二进制逢二要进一的。
对于计算机存储而言,每个bit取值只有两个,使用二进制科学计数法,恰如其分,特别的适合。

同十进制的科学计数法一样,对于一个有效值,也只有一种表达的方式,浮点数针对某个值的表达也是唯一的。

例如:1这个数字的表达唯一
二级制:1.0 * 20

例如:8这个数字的唯一表达
二级制:1.0 * 23

例如:1/2=0.5这个数字的唯一表达
二级制:1.0 * 2-1

例如:1/8=0.125这个数字的唯一表达
二级制:1.0 * 2-3

例如: 1/2 + 1/8 = 0.625这个数字的唯一表达
二级制:1.01 * 2-1

从上面的这些例子也可以看出,每个数字的使用二进制科学计数法的表达也都是唯一的。

4. 浮点数的表达

回到浮点数的存储上来看,计算机中,浮点数的表达使用的特点是:二进制科学计数法
±1.[0-1]… * 2n

在这里插入图片描述

对于固定的值1,小数点前的值1,存储时是缺省带上的,这有效节省了浮点数的存储空间。
对于float类型,每个bit都有着固定的意义,1.缺省带了以后,后续的精度位依次向后表达,float有23个精度位,有8个指数位,1个符号位。

float缺省带了1之后,后面的二进制位数–23个精度位fraction,依次向后表达。
1/2要不要带
1/4要不要带
1/8要不要带
1/16要不要带
1/32要不要带
1/64要不要带
1/128要不要带

这样,±1.[0-1]… * 2n中,±1.[0-1]…被表达之后,n的表达就在指数位上了。

指数位呢,相对比较简单,就是整形的方式,表达2n的n值是多少,可以取值正值,也可以取值负值,取值方法参加下面的附录中。

5. 附:指数位取值位数与取值范围

浮点数的指数位是无符号的,它的正负区分通过采用一个偏移值来确定。
下表可以查到float指数位为8位,单精度的偏移值是127;
下表可以查到double指数位为11位,双精度的偏移值是1023;
float单精度偏移前表达范围[0,255],经过-127偏移后,8位指数位所能表达的范围是:[-127,128]。
double双精度便宜前表达范围是[0, 2047],经过-1023便宜后,11位指数位所表达的范围是: [-1023, 1024]
但是浮点数是需要表达NaN-not a number与Inf-Infinite的,此时指数位需要来标示,所以全1情况被用掉,另外0特殊表达,指数全0情况也被用掉。
float单精度所以去掉一个最大值,一个最小值,指数表达的范围是:[-126,127]
double双精度去掉一个最大值,一个最小值,指数表达的范围是:[-1022,1023]

TypeSignExponentSignificand fieldTotalExponent BiasBits PrecisionNumber of decimal digits
Half1510161511~3.3
Single18233212724~7.2
Double1115264102353~15.9

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu

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

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

相关文章

机器学习笔记20241017

文章目录 torchvisiondataloadernn.module卷积非线性激活模型选择训练误差泛化误差 正则化权重衰退的基本概念数学表示权重衰退的效果物理解释 数值稳定性&#xff08;Gradient Vanishing&#xff09;梯度消失原因解决方法 梯度爆炸&#xff08;Gradient Explosion&#xff09;…

linux anconda下基础环境配置(torch、opencv等)

1、torch安装&#xff08;GPU&#xff09; 下载链接&#xff1a;https://pytorch.org/ 根据配置下载对应版本&#xff0c;CUDA11.4 可用11.3下的安装包 conda install pytorch1.12.0 torchvision0.13.0 torchaudio0.12.0 cudatoolkit11.3 -c pytorch错误解决&#xff1a; 安…

好用的python相关的AI工具Bito介绍

插件名称&#xff1a;Bito 好用的python相关的AI工具Bito介绍 step 1:点插件step 2&#xff1a;搜索bito并安装step3 &#xff1a;需要登录&#xff0c;要有真实邮箱&#xff0c;按步骤走就行&#xff0c;完后就可以使用 step 1:点插件 step 2&#xff1a;搜索bito并安装 step3…

基于PHP考研互助系统【附源码】

基于PHP考研互助系统 效果如下&#xff1a; 系统首页界面 用户注册界面 考研论坛页面 每日打卡页面 管理员登录主页面 管理员主界面 用户管理界面 备考经验界面 研究背景 近些年&#xff0c;随着中国经济发展&#xff0c;人民的生活质量逐渐提高&#xff0c;对网络的依赖性越…

Q2=10 and Q2=1--PLB(Fig.4)

&#xff08;个人学习笔记&#xff0c;仅供参考&#xff09; import numpy as np from scipy.special import kv, erfc from scipy.integrate import dblquad import matplotlib.pyplot as plt import scipy.integrate as spi# Constants w 0.6198 g0_sq 21.5989 rho 0.782…

【UML】一个UML学习的还不错的几个帖子

https://segmentfault.com/a/1190000042775634 寂然解读设计模式 - UML类图&类的六大关系-阿里云开发者社区

【工具变量】上市公司企业广告支出数据(2007-2023年)

一、测算方式&#xff1a;具体而言&#xff0c;参照 Lu 等&#xff08;2022&#xff09;的研究&#xff0c;本文通过上市公司财务报表附注获取每家上市公司每年销售费用明细项目&#xff0c;筛选出广告费、广告宣传费、广告推广费、广告策划费、广告展览费等与广告支出相关的项…

CodeActAgent :Executable Code Actions Elicit Better LLM Agents解读

论文地址 https://arxiv.org/pdf/2402.01030.pdf 项目地址 https://github.com/svjack/CodeActAgent-Gradio/blob/main/README.md 代码智能体的优势 选择代码智能体有以下几个关键原因&#xff0c;它们相较于使用类似JSON的字典输出具有显著优势&#xff1a; 1. 代码的高…

软件分享|Microsoft To Do 任务管理

Microsoft To Do 是一款流行的待办事项和任务管理应用&#xff0c;它帮助用户通过创建任务、清单和安排日程来提高生产力。以下是 Microsoft To Do 的一些关键特性&#xff1a; &#x1f511; 核心特性 任务和清单&#xff1a;创建任务并将其组织到不同的清单中&#xff0c;…

【Python数据结构】深入理解Python中的列表、字典和集合!

【Python数据结构】深入理解Python中的列表、字典和集合&#xff01; 在Python编程中&#xff0c;数据结构是处理和组织数据的核心部分。Python提供了许多内置的数据结构&#xff0c;如列表、字典和集合&#xff0c;它们为程序员提供了灵活、高效的数据管理方式。本篇博客将深…

主键 外键

主键 外键 在关系型数据库中&#xff0c;主键&#xff08;Primary Key&#xff09;和外键&#xff08;Foreign Key&#xff09;是用于维护数据完整性和建立表之间关系的重要概念。 主键&#xff08;Primary Key&#xff09; 定义: 主键是一个或多个列的组合&#xff0c;其值能…

【从零开发Mybatis】引入MapperConfig.xml和Mapper映射配置

引言 学习MyBatis源码之前&#xff0c;了解它是如何通过JDBC查询数据库数据的基础知识是非常有用的。 上一篇我们编写了一个最简单的示例&#xff0c;通过JDBC查询数据库数据&#xff0c;从本文开始&#xff0c;我们将正式开始Mybatis框架的开发。 通过JDBC查询数据库数据存…

计算机网络:数据链路层 —— 共享式以太网

文章目录 共享式以太网CSMA/CD 协议CSMA/CD 协议 的基本原理 共享式以太网的争用期共享式以太网的最小帧长共享式以太网的最大帧长共享式以太网的退避算法截断二进制指数退避算法 共享二进制以太网的信道利用率使用集线器的共享式以太网10BASE-T 共享式以太网 共享式以太网是当…

微分几何-曲线论(曲线)

文章目录 曲线定义常见曲线直线圆圆柱螺线维维安尼曲线 连续曲线/光滑曲线正则曲线切向量切线方程法平面&#xff08;法面&#xff09; 弧长定理1&#xff1a;弧长公式弧长参数化定理2&#xff1a;任何一条正则曲线都可以使用弧长作参数.&#xff08;也称弧长参数为**自然参数*…

[Linux] 逐层深入理解文件系统 (1)—— 进程操作文件

标题&#xff1a;[Linux] 文件系统 &#xff08;1&#xff09;—— 进程操作文件 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一、进程与打开的文件 二、文件的系统调用与库函数的关系 1.系统调用open() 三、内存中的文件描述符表 四、缓冲区…

【Java SE 】类和对象详解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1&#xff0c; 面向对象认识 1.1 什么时面向对象 1.2 面向对象和面向过程 1.2.1 一个例子理解对象和过程 1. 对于电脑来说 2. 对于我们人来说 2. 类的定…

还在为调用大模型API接口返回数据的处理问题烦恼???来看看这篇文章,解决你的烦恼!!!

大家好&#xff01;我是学徒小z&#xff0c;今天给大家分享一下我做项目过程中遇到的一个问题。 文章目录 问题大模型接口解决方案流式返回和回调函数另一个问题1. 使用web组件2. 使用第三方库 问题 不知道大家有没有遇到这样一个问题。在调用大模型接口的时&#xff0c;返回…

Lnmp(mysql分离)(nginx 1.13.6+mysql5.5+php5.3)环境一键搭建

Lnmp&#xff08;mysql分离&#xff09;&#xff08;nginx 1.13.6mysql5.5php5.3&#xff09;环境一键搭建 如果对运维课程感兴趣&#xff0c;可以在b站上、csdn或微信视频号 上搜索我的账号&#xff1a; 运维实战课程&#xff0c;可以关注我&#xff0c;学习更多免费的运维实…

深度学习之残差网络ResNet

文章目录 1. 残差网络定义2. 数学基础函数类3. 残差块4.ResNet模型5.训练模型6.小结 1. 残差网络定义 随着我们设计的网络越来越深&#xff0c;深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力。在这种网络中&#xff0c;添加层会使得网…

单例模式:为何继承无法保证子类的单例特性

这里写目录标题 一、引言二、背景描述三、单例模式的规范边界全局访问点与静态工厂方法代码示例与注意事项 四、单例实现继承遇到的问题五、结论与替代方案结论替代方案特殊的想法&#x1f338;&#x1f338;源码阶段验证编译阶段验证运行阶段验证总结 一、引言 在软件设计中&a…