9.19~9.20elf论文(浮点数的二进制表示确定擦除尾随0的数量)

news2024/11/20 13:18:11

小数转二进制

 

小数部分呈6,2,4,8循环,则二进制序列为1001循环

小数点前的0应该没有任何用,就是表示这是个小数,第一位转化后如果是1,应该是在小数点后的第一位位置

原始小数(通过机制)——无限二进制序列——(逆过程)还原小数

对于逆过程,第2位为1,则2^2=4,取倒数与1乘,第5位为1,2^5=32,取倒数与1乘

精度越高,二进制序列存储长度越长,还原效果越好

二进制乘法

浮点数构造

浮点数64位,一位是符号位,11位是指数位,52位mantissa(尾数)

分别是啥?

科学计数法的指数位就是10的多少次幂

对于3,转为二进制为11,超过了1位(当前进制数),有一个2

二进制乘法和十进制不一样

十进制中小数点移动伴随着乘十或除十,二进制中小数点移动伴随着乘二除二,1.1x2^1,有乘2,就让小数点往前移,即(11)2,为(3)10.

小数点往前移几位,就表明当前进制的规模(指数位)是多大

101.0要往前移2位,则指数位就是2

二进制里的个还是那个个的意思吗?

是。(1.1)2个2,(1.1)2不是(1.1)10。十进制尾数进指数,就是小数点往前移一位,需要的是尾数大于进制

如果是二进制,就是说小数点前的数只能保持1位,小数点每往前移一位,就意味着除了一个2,就是当前指数规模扩大了一点。

8位指数位,2^8=256=128^2,加127就是说,把负数映射到0~127,把正数映射到128~256 

+127就是指数位第7位上加1

尾数真值=1+存储的尾数(即小数点后的部分)

浮点数精度和范围 

1.111111……=1+0.5+0.25+0.125…… 

尾数

(比如11,就是超过了10(当前进制数),就需要把这个10移到指数上(指数位的大小表示当前数的规模),尾数在10以内就表示当前这个数在当下这个规模的进制数还能表示,一旦尾数超过了10,就说明这个数在当下这个规模的进制数就不能表示了,这个数即超过了当前指数记录规模的最大范围,此时就需要指数位++,直到能用一个比进制小的尾数来表示这个数,也就更新好了进制数的范围)

(如111,就不能用10^1表示,因为超出了10^1所能表示的范围,需要10^2的规模才能表示这个数) 

小数点就是小数点,不会因为进制的改变而改变含义,只是小数点前面的数(那么多的数)用哪种进制表示而已,如果用十进制就是3,二进制就是11 

十进制的表示法,指数的底数就是10,二进制的底数,就是2

怎么理解?

科学计数法应该就是说,由多少组的10(一个进制)构成,拆出两部分就是具体是多少,一个小于进制的数,即尾数,用于精确到底是多少,一个当前进制的指数(即只能由进制组成,指数表示当前进制表示的规模(指数越大,规模越大,表示范围越大),多于进制的取模使进制的数量增加,并使多余部分进入尾数,少于的直接进入尾数)。

指数部分决定数的大小范围,有效数字

同样的数,指数越大,则用来表示的尾数越小,因为当前指数越大,规模越大,那么就不需要用很多当前这个规模的进制数;而如果指数越小,进制部分的规模就越小,尾数越大,表示需要多用当前小规模的进制组才能表示出这个数

而由于尾数部分不会超过进制,所以数的大小都由指数部分确定,即如果指数最大n位,则只能表示到当前进制^n^尾数最大(即当前进制数),再大就表示不了

二进制计数法,就是要尾数不大于2(当前进制数),尾数是小数,表示具体由多少个当前指数规模的2组成,

由尾数M和阶码E构成 

阶码是整数,则2^E就是整数,所以尾数M必须为小数才可以使F为小数

怎么使M为小数

MPN

什么是尾数前缀数MPN

就是给定两个双精度浮点数的尾数部分

如果两个数的尾数前半部分相同,但是有一个尾数的后部分都为0,那就把前半部分相同的位数称为尾数前缀数

尾数前缀搜索

目的是啥?

应该是为了确定到底是那部分尾数相同,就是说确定尾随0的数量

定理一(theorem)

给一个双精度的数,他的小数点后位数为α,二进制形式b,那么伊普西隆(00……。b-(f(α)……bl)就是比10^-α小,

它取得就是一个最小计数单元,它不管你用了多少个最小计数单元,就算是0.2,0.5,都是计0.1

伊普西隆是自小数点后f(α)位开始的,那伊普西隆肯定比0.f(α)小

fα是一个函数,=(α*3.32193)向上取整

十进制α与二进制的小数点后位数并不对应 

十进制中小数点后有α位,肯定并不意味着二进制小数点后有α位,如果十进制数的小数点后为α位,那么最小计数单元就是10^-α,其转为二进制就是

其在十进制中小数点后位数为α,即需要α位才能精确表示出这个数

如果转为二进制就需要

比如0.1,为10^-α,α=1,十进制中需要一位才能精确表示

log2(10)就是说由1个多大指数规模的2才能恰好组成1个10 ,要一个2^3.32193……,三位不够,如果是小数部分,那就是三位还多,

如果二进制,(向上取整),需要4位。

这个意思应该是说,转化为二进制后,0.1的表示自二进制小数点后第4位开始表示,就是说,前面的位数都没有0.1的组成部分,自第4位开始之后,开始可以组成并参与构成0.1(原十进制最小单元)

但一定有,f(α)后面的所有加起来都不比f(α)的一个大。

就是0.5>=0.25+0.125+0.0625……

1>=0.5+0.25+0.125+……

如果是0.1,就是自第四位开始组成,但是第三位为0.125,0.1<0.125,如果是0.125,那么组成结果(f(α)位后开始逼近的序列)应为0.00011111111,但是0.1不是整好的二进制数,所以α位后面不全是1,即有间隔的1,不然就有可能超过0.1,即f(α)后面的逼近序列为1100 1100

为什么定理1成立?怎么保证f(α)后面的二进制数比10^-α小?

如果算上f(α)位,应该是不能保证。第f(α)位也参与构成最小单元,而且f(α)位上必为1(即f(α)位上记录的是小于目标数的最大的一个规整二进制数,其后面所有的二进制数加起来都不比这个二进制数大(最多相等),如果这个还不用,那就必不可能凑出)

所以定理一就是说的这个事,就是知道f(α)位参与构成这个最小计数单元(就比如是0.1),后面f(α)的序列也一定有1(即不能保证自f(α)后的求和就一定不大于0.1,因为原数可能为0.2,其最小计数单元还是0.1,这个0.1还是自二进制小数点后第4位开始计数,α=4,我就不能保证在用了不同的计数单元后,f(α)位后面的序列不变,就是其后面的1是会随着具体数而变化的(这是肯定的),就比如0.125,但是我舍弃掉f(α)位,那么就算后面的都是1,也大不过这个f(α)上的数字,所以就可以保证伊普西隆是一定小于10^-α的。

对于规整的二进制小数,这么理解f(α)会出问题?不对,怎么理解

不对,不该看整体是怎么存储的,是因为0.125,最小计数单元是0.01,所以目标变成了0.01,而不是0.125这个整体

0.125组成0.125,2个0.125组成0.25,2个0.25组成0.5,在二进制中没有0.01可以用,有的只是二进制的规整的数,不能用十进制的想法,对0.17,就是有一个0.125(介于1个0.125和2个0.125之间),然后剩下的继续用二进制数凑

那么擦除就是说

擦除的结果是,从某一位开始,后面的全是0,那就是说使之成为了一个标准的二进制数

那么就是怎么确定这个某一位

如3.17,最小计数单元为0.01,转为二进制,其想法就是用什么样的二进制数去凑这个0.01,这个二进制数必须要比0.01小,

这个就是找到了首个比0.01小的二进制数的位数(小数点后),其为0.00625,比0.01小的二进制数都加起来不一定也比0.01小,如果后面都是1,就是f(α)位的二倍(少个1,即如果最低位再有个1,就会形成连续进位,直到f(α)位),即0.0125

首先,3.17里肯定有0.01,那就可以拆出3.16+0.01 

自f(α)开始构成0.01,f(α)+1位的所有和<f(α)<10^(-α),

然后说把f(α)+1位及其后的所有位都置为0,只保留f(α)位,那就是说,f(α)位及其之后的数<=0.01(10^(-α)),就是近似表示了0.01,而且偏小,也就是在3.16的基础上,加了一个比0.01还小的数,但是,这样做转为二进制后就是个规整的二进制数,尾随0的数量多

可能3.16的部分也遭到了修改,但是可以保证修改的部分的和总是小于10^(-α)

再看0.125,其最小计数单元是0.001,就是0.124+0.001,那么就是把0.001给近似表示,使其从开始组成0.001的二进制位数的后一位开始都为0,也就是从那一位开始,是一个规整的二进制数

目的是,存储小数,

对任意一个十进制数(小数点后有α位)转为二进制数,小数点后保留l位(无限循环),那么构造伊普西隆为

相当于还是在原十进制中取数

1023是啥 ,1024是二的10次方

思路是,给定一个十进制数,找到其最小存储单元

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

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

相关文章

如何看待著名游戏引擎 Unity 宣布将更改收费模式,收取「运行时费用」?这将造成哪些影响?

先下结论&#xff1a;Unity 的高管是不是【不友善内容&#xff0c;请于 24 小时内及时更改】&#xff1f; 简单介绍下这个收费模式&#xff1a;年收入大于 20w 美金且安装量大于 20w 的&#xff0c;每一份额外下载需要给 Unity 交 0.2 刀。 首先&#xff1a;听上去好像不会影响…

有关哈希的概念,哈希表(哈希桶),unordered_map和unordered_set的模拟实现

前言 在C中unordered系列的容器效率很高原因是在底层使用了哈希结构&#xff0c;让我们一起来了解一下哈希相关的知识&#xff0c;并且简单的实现以下哈希思想相关的容器。 目录 1.哈希概念 2.哈希冲突 3.哈希函数 4.哈希冲突解决 4.1闭散列 1.线性探测 2.二次探测 S 4.2…

高效批量剪辑,轻松缩小视频尺寸!一键解决视频文件大小问题!

对于那些喜欢拍摄和分享视频的人来说&#xff0c;视频文件大小往往成为一个头疼的问题。为了让您能够更加方便地处理视频尺寸&#xff0c;我们提供了一项高效的批量剪辑服务&#xff0c;让您能够轻松缩小多个视频的尺寸 首先&#xff0c;我们要进入视频剪辑高手主页面&#xf…

Linux系统如何将新硬盘挂载到Home目录下

Linux系统如果将硬盘挂载到Home目录下 目录 1、对新增磁盘进行分区 2、分区格式化 3、将新硬盘临时挂载在一个目录下

TCP协议和UDP协议

TCP通信原理 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种传输层协议&#xff0c;它主要负责点对点的数据传输TCP 主要特点是面向连接的&#xff0c;也就是说&#xff0c;在数据传输之前&#xff0c;它需要先建立一个连接。连接建…

国产AI网址

【国产AI网址】 讯飞星火&#xff1a;xinghuo.xfyun.cn 文心一言&#xff1a;yiyan.baidu.com 天工AI&#xff1a;search.tiangong.cn 通义千问&#xff1a;qianwen.aliyun.com 有很多国产AI网址可以提供各种功能和应用。以下是其中一些&#xff1a; * 一起用AI&#xff1a;ht…

负载均衡 —— SpringCloud Netflix Ribbon

Ribbon 简介 Ribbon 是 Netfix 客户端的负载均衡器&#xff0c;可对 HTTP 和 TCP 客户端的行为进行控制。为 Ribbon 配置服务提供者地址后&#xff0c;Ribbon 就可以基于某种负载均衡算法自动帮助服务消费者去请求。Ribbon 默认提供了很多负载均衡算法&#xff0c;例如轮询、随…

useCallBack

React.memo 保证了只有props发生变化时&#xff0c;该组件才会重新渲染 &#xff08;当然组件内部的state 和 context 变化也会导致组件重新渲染&#xff09;&#xff0c;但咱们只要将咱们的子组件包裹&#xff0c;便可以保证Child组件在props不变的情况下&#xff0c;不会重新…

一篇聊聊Mybatis插件开发

Mybatis的插件&#xff0c;主要用于在执行sql前后&#xff0c;对sql进行封装加工&#xff0c;或者在sql执行后&#xff0c;对数据进行加工处理。常用于一些公共数据操作处理&#xff0c;例如&#xff1a; 分页插件&#xff0c;在执行sql查询前增加分页参数多租户系统中&#x…

[winerror 5] 拒绝访问。: ‘..\\data‘解决方案

使用Jupyter Notebook学习深度学习时出现错误如下&#xff1a;[winerror 5] 拒绝访问。: ‘…\data’ 解决方法&#xff1a; 打开anaconda3找到对应环境的python.exe 点开属性&#xff0c;点安全&#xff0c;选择如下&#xff1a; 点编辑&#xff0c;选择User&#xff0c;勾…

k8s集群-3 pod 管理

pod是可以创建和管理k 8 s 计算的最小可部署单元&#xff0c;一个pod 代表着集群中运行的一个进程&#xff0c;每个pod 都有一个唯一的ip 一个pod 类似一个豌豆荚&#xff0c;包含一个或者多个容器&#xff0c;多个容器间共享IPC Network和UTC namespace pod 包裹了容器 下载…

Unity之NetCode多人网络游戏联机对战教程(2)--简单实现联机

文章目录 1.添加基本组件2.创建NetworkManager组件3.创建Player4.创建地面5.创建GameManager6.编译运行7. 测试联机后话 1.添加基本组件 NetworkManagerPlayerScene 2.创建NetworkManager组件 创建一个空物体&#xff0c;命名为NetworkManager 选择刚刚创建的NetworkManager…

Android Jetpack组件架构:Lifecycle的使用 和 原理

Android Jetpack组件架构&#xff1a;Lifecycle的使用和原理 导言 作为Jetpack中关于生命周期管理的核心组件&#xff0c;Lifecycle组件是其他比如LiveDate和ViewModel等组件的基础&#xff0c;本篇文章主要就将介绍关于Lifecycle的使用和它的运作原理。 Lifecycle的使用 我…

【05】FISCOBCOS中的节点配置

官方文档https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/configuration.html 配置黑名单列表 基于防作恶考虑&#xff0c;FISCO BCOS允许节点将不受信任的节点加入到黑名单列表&#xff0c;并拒绝与这些黑名单节点建立连接&#xff0c;通过[certif…

MySQL数据库的索引和事务

目录 一、索引 1.1Mysql索引 1.2索引的作用 1.3 创建索引的依据 1.4 普通索引 修改表方式创建索引 删除索引 1.5 唯一索引 修改表方式创建 删除索引 1.6 主键索引 修改表方式创建 1.7 组合索引 1.8 全文索引 1.9查看索引 二、事务 2.1事务概念 2.2事务的ACID特…

Java 核心技术卷 I —— 第2章 Java 编程环境

文章目录 2.1 安装 Java 开发工具包&#xff08;*&#xff09;2.2 使用命令行工具2.3 使用集成开发环境&#xff08;*&#xff09;2.4 JShell 2.1 安装 Java 开发工具包&#xff08;*&#xff09; 2.2 使用命令行工具 ​ 打开终端窗口&#xff0c;进入 Java 的 bin 目录&…

Linux Mint大动作:全新设计Software Manager,大幅提升用户体验

Clem Lefebvre在Linux Mint博客上宣布&#xff0c;团队已经着手开发新版本。新版本中将版本全新设计的Software Manager&#xff0c;带来更卓越更现代化的界面大幅提升用户体验。 全新的Software Manager会迎来大量变动&#xff0c;包括的内容包括&#xff1a; 用户界面看起来…

别再乱写git commit了

B站|公众号&#xff1a;啥都会一点的研究生 写在前面 在很长的一段时间中&#xff0c;使用git commit都是随心所欲&#xff0c;log肥肠简洁&#xff0c;随着代码的迭代&#xff0c;当时有多偷懒&#xff0c;返过头查看git日志就有多懊悔&#xff0c;就和写代码不写doc string…

Super Marker插件——标记资源,提高效率

插件介绍&#xff1a; 这是一款可以给资源添加颜色或图标标记&#x1f4cc;的插件&#xff0c;当资源文件比较多的时候&#xff0c;颜色标记可以让你一眼定位到要使用的资源&#xff0c;提高开发效率。 插件地址&#xff1a; Cocos商店&#xff1a;https://store.cocos.com/a…

工业蒸汽量预测(速通一)

工业蒸汽量预测&#xff08;一&#xff09; 赛题理解1、评估指标2、赛题模型3、解题思路 理论知识1、变量识别2、变量分析3、缺失值处理4、异常值处理5、变量转换6、新变量生成 数据探索1、导包2、读取数据3、查看数据4、可视化数据分布4.1箱型图4.2获取异常数据并画图4.3直方图…