浮点数的存储方式和取值范围

news2024/11/28 14:17:32

一、有符号整型的编码方式

1. 真值

把用"+"、"-"表示符号,数值部分用绝对值的编码的表示方式称为真值。

如+3用4bit真值表示为+0011,-1用真值表示为-0011。

2. 原码

符号位为0表示正数,符号位为1表示负数,数值位为真值的绝对值。

以8bit数值为例,最高1位位符号位,则

 1 的原码表示为 +000 0001 => 0,000 0001

-1 的原码表示为  -000 0001 => 1,000 0001

3. 反码

x>=0时,反码与原码相同;x<0时,反码为|x|的按位取反。

 1 的反码表示为 +000 0001 => 0,000 0001

-1 的反码表示为  -000 0001 => 1,111 1110

4. 补码

x>=0时,移码与原码相同;x<0时,补码为|x|的按位取反再加1。

 1 的补码表示为 +000 0001 => 0,000 0001

-1 的补码表示为  -000 0001 => 1,111 1110 + 1 => 1,111 1111

5. 移码

 对于一个nbit的整形数值,如果它表示有符号数,则它的表示范围为eq?-2%5E%7Bn-1%7D%20%5Csim%202%5E%7Bn-1%7D%20-1;如果它表示无符号数,则它的表示范围为eq?0%20%5Csim%202%5E%7Bn%7D%20-1

可以看出,如果给有符号数的表示范围整体加上eq?2%5E%7Bn-1%7D作为偏移值,则刚好符合表示无符号数的表示范围。这种类似前移的操作得到的编码称为移码。

b68fb00aab8140d682bc807817dcbafd.png

 注:上面这张图是我从别的地方抄来的,它表示一个(n+1)bit的移码的表示范围。

 1 的移码表示为 +000 0001 => 1,000 0000 +000 0001 => 1,000 0001

-1 的移码表示为 -000 0001 => 1,000 0000  -000 0001 => 0,111 1111

因此,对于一个nbit的移码,有如下规律

1. 通过观察可以发现,移码刚好与补码的数值位完全相同,符号位相反。

2.  移码保留了数据原有的大小顺序,即移码大则真值大,移码小则真值小。

3.  移码全为0时,对应真值也是最小值,即eq?-2%5E%7Bn-1%7D;移码全为1时,对应真值也取最大值,即eq?2%5E%7Bn-1%7D-1

二、浮点数的编码方式

1. 非规格化浮点数

浮点数由阶码j和尾数m构成,一个基数为r的浮点数表示为

N=m \times r ^{j}

m为尾数,是一个小数,通常为有符号的定点小数,一般使用原码表示,有一位符号位。

j为阶码,即指数,是一个有符号整数,通常用移码表示,有一位符号位。

r为基数,可以取2、8、10等任意数值,但通常取2。

以二进制浮点数[10.0101]_{2}即2.3125为例,它可以写成各种不同的表示形式

N = [10.0101]_{2} \times 2^{0} = [0.100101]_{2} \times 2^{2} = [1001.01]_{2} \times 2^{-2} =...

因此也可以得知使用非规格化浮点数表示浮点数的方法并不唯一。

2. 规格化浮点数

为了让浮点数有统一的表现形式,也为了使有限字长的浮点数尽可能表示更多的有效位数,因此有了规格化的浮点数表示方法。

通过左右移动位数的小数点,使得尾数为0.1xxxx的形式,即要求\frac{1}{2} \leqslant |m| < 1,然后再转为浮点数的存储形式。

例如2.3125,规格化后的写法为[0.100101]_{2} \times 2^{2},如果用一个含1位符号位、用移码表示的5bit阶码和含1位符号位、用原码表示的11bit尾数来表示该数值,则有

 

二、IEEE 754标准下的浮点数表示方法

以float型浮点数为例,该类型数据占4字节,其结构如下。

d4cf28091e3a4895932f06a578708a98.png

 则该浮点数的取值为N=\left\{\begin{matrix} &1.m \times 2^{j-127}, S=0\\ -&1.m \times 2^{j-127}, S=1 \end{matrix}\right.

最高位为1bit的数符SS为0表示该浮点数是正数,1表示负数。

8bit为阶码j,其中包含一位的阶符S_{j}。阶码用移码表示,IEEE规定阶码全为0时表示0,阶码全为1时表示无穷大。因此,这个移码的偏移值不是2^{7}而是2^{7}-1=127。因此,移码可以表示的范围是[-126, 127]。

23bit为尾数m,没有符号位。IEEE 754是规格化的浮点数,要求必须左右移动小数点至尾数为1.xxxxx的形式,且存储时省略最高位的1。因此,m全为0时表示1.000...00;m全为1时表示1.111...11。因此尾数m的表示范围为[1, 2)。

因此,float型浮点数可以表示的最大正数为2 \times 2^{127} \approx 3.4 \times 10^{38}

最小正数为1 \times 2^{-126} \approx 1.175 \times 10^{-38}

最大负数和最小负数同理。

以数值178.125为例,它用二进制表示为10110010.001,规格化后为1.0110010001 \times 2^{7}

因此,尾数为01100100010000000000000。阶码为00000111+01111111=10000110。

所以该数值的float型编码结果为

 

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

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

相关文章

网络安全的究竟如何自学?

以十五派9年信息安全教育经验以及数千名学生摸索实践可以得知&#xff0c;在知乎上能够搜索到这个问题的人不外乎三种人&#xff1a; 第一种人在找网络安全入门的捷径&#xff1b; 第二种人想自己的方向进而获得认同感&#xff1b; 第三种人是已经在自学网络安全但是过程中碰…

卡尔曼滤波与组合导航原理(九)Sage-Husa自适应滤波

自适应滤波有很多种方式&#xff0c;也很实用 一、自适应滤波基本思想 函数模型 { X k Φ k / k − 1 X k − 1 Γ k − 1 W k − 1 Z k H k X k V k \left\{\begin{array}{l} \boldsymbol{X}_{k}\boldsymbol{\Phi}_{k / k-1} \boldsymbol{X}_{k-1}\boldsymbol{\Gamma}_{…

Mujoco xml编写(二)

目录 .1 运行 1.1 测试 .2 XML 2,1 基础 2.3 简单实例 2.3 进阶例子 .1 运行 1.1 测试 基于Mujoco210 Ubuntu 22.04配置安装_啥也不是的py人的博客-CSDN博客完成安装后 import mujoco_py import os mj_path mujoco_py.utils.discover_mujoco() xml_path os.path.join…

学习并深入理解闭包

前言 学习闭包前&#xff0c;先学点别的。 程序执行时&#xff1a; 1.编译阶段 创建变量对象GO&#xff0c;包括变量和函数作用域装在一块内存中。但是没有赋值&#xff0c;变量都是undefined,函数&#xff1a;0xxx 2.创建执行上下文 里面有VO对应ao(函数里的变量&#xff0…

数据结构 -- 跳跃链表

跳跃链表的概念 跳跃链表是有序链表的一个变种&#xff0c;在一个有序链表中&#xff0c;查找一个链表中的元素需要进行一次遍历&#xff0c;时间复杂度为O(n)&#xff0c;为了加快查找的过程&#xff0c;能够跳过某些元素呢&#xff1f;一个思路就是牺牲一定的空间换时间&…

入职外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

Redis系列第一篇:ubuntu18.04下源码编译安装Redis 6.2.12

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是一个key-value存储系统。和Memcached类似&#xff…

EasyExcel设置动态head数据(不是格式)及postman自测的坑

需求背景&#xff1a; 导出某某业务模块的数据&#xff0c;但是&#xff0c;数据列的标题内容是根据当前日期计算出来的。 比如今天是5月20&#xff0c;那么列就是 5/21 、 5/22…以此类推 问题&#xff1a; EasyExcel 通过Bean的注解实现匹配的&#xff0c;这是最便捷的方式&…

这5款小众又好用的软件,你都知道吗?

1.文件比较——WinMerge WinMerge是一款用于比较和合并文件和文件夹的工具。它可以让你对不同的文件和文件夹进行可视化的对比,并显示出差异和相似之处。WinMerge支持多种功能,如合并,同步,过滤,插件等。这款工具非常实用,但是可以提供强大的文件比较功能,是管理文件和解决冲突…

123 2021年国赛 二分搜索+前缀和

题目描述 小蓝发现了一个有趣的数列&#xff0c;这个数列的前几项如下&#xff1a; 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 小蓝发现&#xff0c;这个数列前 1 项是整数 1&#xff0c;接下来 2 项是整数 1 至 2&#xff0c;接下来 3 项是整数 1 至 3&#xff0c;接下来 4 项是整数…

day2 ARM处理器概论

目录 RISC处理器和CISC处理器 SOC(System on Chip) ARM指令集概述 指令集 ARM指令集 编译原理 ARM存储模型 ARM指令存储 ARM工作模式 工作模式的理解 ARM工作模式分类 RISC处理器和CISC处理器 RISC处理器 只保留常用的的简单指令&#xff0c;硬件结构简单&#xff0c;复…

你觉得你很优秀,为什么连一个软件测试面试都过不了?

目录 前言 简历请用数字化结果不要只是堆研工作经历 简历一:我的工作内容有 简历二:我的工作内容有: 当你和HR面对面坐下来时&#xff0c;迎接我们的第一个问题往往是:“来&#xff0c;请简单介绍下你自己吧。 了解你的过去是判断你未来的最好方式 增加好印象&#xff0c…

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍2. SVM支持向量机算法2.1 鸢尾花数据集2.2 鸢尾花数据集可视化2.2.1 散点图2.2.2 箱型图2.2.3 三维散点图&#xff08;3D&#xff09; 3. SVM算法实现3.1 完整代码3.2 运行结果3.3 问题与分析 1. 作者介绍 张佳伦&#xff0c;男&#xff0c;西安工程大学电子信…

androidstudio ffmpeg 音频转换

java-ffmpeg-音频转换 需求描述功能流程所需条件步骤步骤1步骤2步骤3一些我使用中遇到的异常 需求描述 项目中的语音唤醒后的语音识别人声检测一直是一个很令我头痛的问题,之前因为对各种类型的工具包使用不熟练,以及时间问题,一直没有根治这个人声检测体验不好的问题,之前的解…

不同品牌或型号的单片机

以下是一些常见的单片机品牌和型号&#xff1a; 微控制器&#xff08;Microchip&#xff09;&#xff1a;PIC系列&#xff08;如PIC16F877A、PIC18F4550&#xff09; 瑞萨电子&#xff08;Renesas&#xff09;&#xff1a;RX系列&#xff08;如RX231、RX65N&#xff09;需要资…

Termius 最好用的SSH 连接工具

Termius 最好用的SSH 连接工具 一、环境准备二、配置2.1 terminus 安装2.2 删除自动更新2.3 修改用户信息 三、使用四、页面展示 该工具 mac os 可直接使用 本文只展示 windows 使用步骤&#xff0c;本教程使用的 termius 版本为 7.59.6 一、环境准备 termius 下载 官网下载地址…

ubuntu上安装docker报错

执行docker命令的时候报错如下&#xff1a; Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 为了解决这个问题&#xff0c;看了一些帖子有的说重启docker.service服务或者看该服务是否已经正常启动&#xff0c;结果网上…

超实用!新手项目经理掏心窝总结的经验

像项目这样复杂的环境中&#xff0c;往往会出现错误判断、沟通不畅、管理不善以及最常见的错误。因此&#xff0c;项目管理需要项目经理有广泛的经验、洞察力和技能&#xff0c;无论是规划、组织还是有效领导团队&#xff0c;以在规定的时间和预算内实现项目目标。在这种情况下…

基于BAT指令定时备份Oracle并发送邮件

前言 在企业级应用程序中&#xff0c;数据是非常重要的资源。因此&#xff0c;我们需要定期备份数据以确保其安全性和完整性。在Oracle数据库中&#xff0c;我们可以使用多种方法来备份数据&#xff0c;其中一种方法是使用BAT脚本来进行自动化备份。 在本文中&#xff0c;我们…

【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】

前言 这是一款基于AI算法的实时变声器&#xff0c;如果你不懂AI也没事&#xff0c;直接使用我提供的一键安装包 链接&#xff1a;https://pan.baidu.com/s/1f3X6JdBVOgeTNPf0B3CRKg 提取码&#xff1a;k5v2 变声器安装使用 有两款变声器&#xff0c;都是基于RVC做的&#xf…