当前位置: 首页 > news >正文

数据的表示和存储——

目录

浮点数的编码表示

浮点数类型

​编辑

浮点数的表示

(1)浮点数(Float Point)的表示范围

(2)规格化数形式

(3)IEEE 754标准

其他形式的机器数表示

 个人总结


浮点数的编码表示

浮点数类型

C语言声明操作数类型存储长度(位)
float单精度浮点数32
double双精度浮点数64
long double扩展精度浮点数80 / 96

实数类型分为:单精度浮点,浮点双精度和扩展精度浮点

科学计数法(Scientific Notation) 与浮点数

从上面可以看出,对于一个实数都可以用一个定点整数和定点小数来表示,其中规格化的形式,小数点前面只有一个非0的数,对于二进制表示时,必定是1 

浮点数的表示

(1)浮点数(Float Point)的表示范围

  • 以下面的32位浮点数格式的规格化数为例,计算表示范围

1、第0位数代表符号位

2、第1~8位为8位移码表示阶码E(偏置常数为128)

3、第9~31位为24位二进制原码小数表示的尾数M(tips:注意这里定点小数表示尾数是采用的原码表示

规格化尾数的小数点后第一位总是1,故规定第一位默认的1不明显的表示出来,这样可以用23位表示24位的尾数

 因为原码对称,故其表示范围关于原点对称。可表示范围包括图中的阴影部分和0

机器0:即尾数为0或落在下溢区中的数

浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀

(2)规格化数形式

为了能表示更多有效数字,通常规定规格化数的小数点前为1

 

32bit规格化数

其中:

1)S是符号位(Sign) 

2) Exponent用移码表示(移码其实就是原码加上一个偏置常数)来表示

3)Significand表示xxxxxxxxxx(部分尾数)基可以是2/4/8/16,约定信息,无需显示表示

早期的计算机各自用自己的浮点数,这样会带来的结果是在不同的计算机中采用不同的格式解析数据,其实是不通用的,所以出现了IEEE754标准

(3)IEEE 754标准

 这里插入一个链接,讲解IEEE 754非常详细的一个博客

IEEE754标准: 一 , 浮点数在内存中的存储方式 - 知乎 (zhihu.com)

 其中,需要注意的是上面的博客中没有指出阶码全0和全1是用来表示特殊情况的。

Q:为什么移码的偏置常数采用127而不是像之前的128

A:   IEEE 754标准中,单精度浮点数可表示的范围是0000 0001(-126)~1111 1110(127);如果偏置常数采用的是128,则32位浮点数可表示的范围是0000 0001(-127)~1111 1110(126),2^-126~2^127比2^-127~2^126可表示的范围大

Q:已知float型变量x的机器数为BEE0 0000H,求x的值是多少?

A:转换为2进制,1  0111 1101 110 0000 0000 0000 0000 0000

符号位:1(负数) 

阶码(指数):为避免混淆,用阶码表示阶的编码,用阶或者指数表示阶码的值

阶码:0111 1101B = 125

阶码的值:125-127 = -2(指数为-2)

尾数数值部分: 1 +1x2-1+ 1x2-2+ 0x2-3+ 0x2-4+ 0x2-5+… =1+2-1+2-2= 1+0.5 +0.25 = 1.75

所以真值是:-1.75x2^-2 = -0.4375

Q: 已知float型变量x的值为-12.75,求x的机器数是多少?
A: -12.75=-1100.11B =-1.10011B x 2^3

符号S=1
阶码E=127+3=128+2=1000 0010
显式表示的部分尾数Significant = 100 1100 0000 0000 0000 0000(第一个1可以不用显示表示出来,因为规格化规定小数点前面一个数是非0的而且只有一位,必定是一个1)

所以: x 的机器数表示为: 1 ,1000 0010, 100 1100 0000 0000 0000 0000
转换为十六进制表示为:C14C0000H

其他形式的机器数表示

前面定义的是针对规格化形式(normalized form)的数,那么,其他形式的机器数表示什么样的信息呢?

(1)0的机器数表示

0其实就是尾数部分和阶码部分都是为0的,不同的符号位表示+0和-0,二者都是有效的

How to represent 0?
exponent: all zeros
significand: all zeros
What about sign?Both cases valid.
+0: 0 00000000 00000000000000000000000
-0: 1 00000000 00000000000000000000000
(2)+∞/-∞的机器数表示

无穷其实就是阶码全为1,其中尾数部分全为0,不同的符号位表示正无穷和负无穷
浮点数除0的结果是+/-∞, 而不是溢出异常.(整数除0为异常)
为什么要这样处理? 可以利用+∞/-∞作比较。例如:X/0>Y可作为有效比较
How to represent +∞/-∞?
Exponent: all ones (11111111B = 255)
Significand: all zeros
+∞: 0 11111111 00000000000000000000000
-∞:  1 11111111 00000000000000000000000
(3)“非数”的表示(NaN)

非数,这个错误其实在编写程序的时候也是经常遇到的一种情况,其中非数就是阶码全为1,尾数部分不为0的情况
例如“Sqrt (-4.0) ”,“0/0”等的结果称为Not a Number (NaN) ,即“非数”
NaNs 可以帮助调试程序
How to represent NaN ?
Exponent: 255
Significand: nonzero
4. 非规格化数(Denorms)的表示

除了上面的三种情况,其实只剩下一种,就是阶码全为0,尾数部分不为0,这表示的就是非规格化数
How to represent Denorms?
Exponent: 0
Significand: nonzero

这张图,其实包含了很多信息,其中用规格化数表示浮点数其实不能表示完全,比如最小的整数用规格化数表示其实就是上面图中的1.0000....x2^-126,对于比如说2^-125~2^-124和2^-124~2^-123,其中后者长度是前者的两倍,但是由于尾数部分的位数是固定的,其实二者之间可以表示的数据的个数是一样的,都是2^23个,所以对于浮点数来说,数据越大,可以表示的最近的两个浮点数的距离是越来越大的,数据越小其实可以表示的数据精度越高,越有可能可以精确表示,但是数字越大,由于可以表示的数字间距越来越大,所以表示的就可能更不精确,这也是为什么我之前一直不知道为什么计算机不能表示任意的浮点数,比如0.1+0.2不是0.3会有偏差的原因,就是不能表示0.3只能取离它最近的一个浮点数来表示。

 个人总结

1、任何一个实数都可以用一个定点整数和一个定点小数来表示,其中定点整数其实就是指的整数(来表示科学计数法中的指数部分),定点小数一般表示科学计数法中的小数部分(尾数)。

2、浮点数是有精度的,之前是不知道为什么有的浮点数在计算机中是没有办法存储和表示的,只能根据某个特定的规则进行舍入和表示,而且浮点数数字越小越有可能精确表示,对于浮点数越大,精确表示的可能就越小,因为数越大,可表示的两个浮点数之间的距离越来越大。

3、浮点数采用科学计数法,只需要定点小数表示尾数(采用原码)和定点整数表示指数部分就可以表示任意一个浮点数

4、IEEE 754标准的一个好的博客

IEEE754标准: 一 , 浮点数在内存中的存储方式 - 知乎 (zhihu.com)

相关文章:

数据的表示和存储——

目录 浮点数的编码表示 浮点数类型 ​编辑 浮点数的表示 (1)浮点数(Float Point)的表示范围 (2)规格化数形式 (3)IEEE 754标准 其他形式的机器数表示 个人总结 浮点数的编码表…...

springboot零基础到项目实战

推荐教程: springboot零基础到项目实战 SpringBoot这门技术课程所包含的技术点其实并不是很多,但是围绕着SpringBoot的周边知识,也就是SpringBoot整合其他技术,这样的知识量很大,例如SpringBoot整合MyBatis等等。因此…...

自媒体都在用的5个素材网站,视频、音效、图片全部免费下载~

推荐几个自媒体必备的素材库,免费可商用,建议收藏! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 国内超大的素材库,在这里你可以找到设计、办公、图片、视频、音频等各种素材。视频素材就有上千个,全部都很高清…...

开放式耳机新巅峰!南卡OE Pro兼备澎湃音质、舒适佩戴、创新设计

众所周知,当初苹果带来TWS耳机新时代以后,后面有许多的蓝牙耳机相继跟随和模仿,但NANK南卡却独辟蹊径,将在近日重磅推出首款0压无感全开放无线耳机——南卡OE Pro,走向开放式TWS耳机的新时代。 31度黄金倾斜受力面&…...

1700页,卷S人的 Java《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…...

普通人是否能从ChatGPT中分一杯羹?

ChatGPT3.0刚刚推出,最开始的时候,人们只是将ChatGPT看作一个很会聊天的机器人,无论问题多么天马行空,它的答案看上去都有理有据。后来,像打开潘多拉魔盒一样,很多人开始拿它编大纲、撰写文案、编代码、创作…...

SpringBoot自动装配原理(附面试快速答法)

文章目录SpringBoot自动装配原理1. 从调用SpringApplication构造器方法开始2. 解析启动类4.按需装配4.1 分析dubbo自动装配5. 如果定义自己的starter6. 面试答法SpringBoot自动装配原理 之前面试被问到这个题目,只会答一些spi、AutoConfigration注解、Import之类的&…...

如何在大厂做好架构演进?

1 架构演进的定义 1.1 定义 通过设计新的系统架构(4R),来应对业务和技术的发展变化。 1.2 关键点 新架构新的复杂度 1.3 目的 应对业务和技术的发展变化后带来新的复杂度。 案例 淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难…...

减半技术实现求a的n次幂

目录 减半技术实现求a的n次幂 程序设计 程序分析 减半技术实现求a的n次幂 【问题描述】给定两个正整数a和n,采用减半技术求a的n次幂;其中a<100,b<20; 【输入形式】两个整数a,n(a与n中间用空格隔开); 【输出形式】一个整数 【样例输入1】2 3 【样例输出1】8 【样…...

MYSQL8窗口函数

MYSQL8窗口函数 MYSQL8窗口函数窗口函数分类序号函数--排行榜row_number()示例rank()示例dense_rank()示例partition by对每个分区内的行进行排名不加partition by全局排序 开窗聚合函数分布函数CUME_DIST()PERCENT_RANK() 前后函数LAG()的用法LEAD() 头尾函数其他函数NTH_VALU…...

全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)

1.1 电脑分区 1.1.1 分区原因 由于我们想要在电脑上同时安装Windows和Ubuntu系统&#xff0c;所以就要在window使用的内存中划分出来一段用来给Ubuntu系统使用&#xff0c;相当于一个应用程序一样 1.1.2 分区步骤 1.右击此电脑&#xff0c;点击管理&#xff0c;然后双击左侧…...

[STM32F103C8T6]看门狗

看门狗&#xff1a; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造 成程序的跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#xff0c;由单片机控制的系统无法继续工作&#xff0c;会 造成整个…...

浪潮:2022年净利同比增长51.39%

一、4月头条 华为的紧急回应&#xff0c;让东方材料21亿收购要黄&#xff1f; 4月10日消息&#xff0c;东方材料昨日晚间公告拟定增募资不超20亿元&#xff0c;用于向诺基亚全资子公司NSN收购TD TECH 51%股权&#xff08;交易对价21.22亿元&#xff09;。TD TECH剩余49%股权由…...

大厂面试内幕:阿里内部整理出的5000页Java面试复盘指南,起飞!!!

互联网的技术岗一直是高薪的代名词&#xff0c;特别是大厂&#xff0c;应届生的年薪基本都20W起&#xff0c;比一般的公司高多了。 看下面这张网上热传的大厂应届生薪酬表就知道了&#xff0c;SP offer甚至能拿到30W以上。 技术社区也有晒出高薪offer的同学&#xff1a; 除了薪…...

数据结构——哈希表相关题目

数据结构——哈希表相关题目 242. 有效的字母异位词1.暴力解法2.排序后比较3.哈希表 383. 赎金信哈希解法 49. 字母异位词分组438. 找到字符串中所有字母异位词3. 无重复字符的最长子串76. 最小覆盖子串349. 两个数组的交集1.排序双指针2.哈希表 350. 两个数组的交集 II1.排序双…...

域名解析设置方法

域名解析设置都是实时生效的&#xff0c;一般只需几秒即可同步到各地 DNS 上&#xff0c;但各地 DNS 均有缓存机制&#xff0c;解析的最终生效取决于各运营商刷新时间! 一、A记录 ①.主机名必须填写&#xff1b; 常用主机名有&#xff1a;www//*&#xff0c;效果参见上图说明&…...

MySQL连接空闲时间超过8小时报错原因与延伸知识

1 错误原因 1.1 两个参数 MySQL服务端两个参数控制连接超时时间&#xff1a; wait_timeoutinteractive_timeout1.1.1 如何查看 show global variables like interactive_timeout show global variables like wait_timeout 复制代码 1.1.2 含义与区别 wait_timeout&#xf…...

Flutter渲染原理

一 Widget Element RenderObject 之间的关系 1 Widget 在Flutter 中&#xff0c;万物皆是Widget,无论是可见的还是功能型的。一切都是Widget. 官方文档中说的Widget 使用配置和状态来描述View 界面应该长什么样子。 它不仅可以表示UI元素&#xff0c;也可以表示一些功能性的…...

PathCore:IAD文献解读

论文链接&#xff1a;[Towards Total Recall in Industrial Anomaly Detection]Towards Total Recall in Industrial Anomaly Detection &#xff1a;数据集&#xff0c; &#xff1a;标签 : 在ImageNet上预训练后的网络 第 张图 网络中第 层 1. Locall…...

C语言判断一个日期是在该年的第几天案例讲解

今天是2023年4月11号&#xff0c;我们就用今天举例得出是2023年的第几天。 思路分析 1&#xff09;我们想知道2023年4月11号是2023年的第几天&#xff0c;只需要把1到3月份的天数累加求和然后加上今天日期也就是11就可以算出2023年4月11号是2023年的第几天。 推广&#xff1a;…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...