IEEE754浮点数的表示

news2024/11/18 2:57:08

在学习浮点数的表示之前,先看一下二进制和十进制之间的转换。再来学习IEEE754标准的浮点数。

十进制转二进制

对于十进制整数转换位2进制小数。

例如125转换为二进制小数方法为除二取余。

125/2=62       余数1

62/2=31         余数0

31/2=15         余数1

15/2=7           余数1

7/2=3            余数1

3/2=1            余数1

1/2=0            余数1

所以转换的二进制数为111_1101。

十进制整数转换为二进制小数。整数部分除二取余,小数部分乘二取整。

例如125.125

整数部分为125二进制表示为111_1101

小数部分为0.125

0.125*2=0.250 取整为0留小数部分0.250

0.250*2=0.500 取整为0留小数部分0.500

0.500*2=1.000 取整为1留小数部分0.000

小数部分表示为001

所以对于十进制小数125.125转换为二进制小数为111_1101.001

二进制小数转换为十进制数据

例如1111101.001转换为十进制

整数部分1111101转换为十进制数为:

(1111101)2 = (1 × 26) + (1 × 25) + (1 × 24) + (1 × 23) + (1 × 22) + (0 × 21) + (1 × 20) = (125)10小数部分0.001转换为十进制为:

(0.001)2 = (0 × 20) + (0 × 2-1) + (0 × 2-2) + (1 × 2-3) = (0.125)10

浮点数的表示范围

运算结果大于最大正数时称为正上溢,小于绝对值最大负数时称为负上溢,正上溢和负上溢统称上溢。

数据一旦产生上溢,计算机必须中断运算操作,进行溢出处理。

当运算结果在0至最小正数之间时称为正下溢,在0至绝对值最小负数之间时称为负下溢,正下溢和负下溢统称下溢

数据下溢时,浮点数值趋于零,计算机将其当作机器零处理。

这种产生上下溢的行为,往往是在运算中导致的

IEEE754标准的浮点数格式

以32位浮点数标准为例

S:数符,0为正1为负。

阶码e:8位,阶码=阶码真值+127。阶码采用移码来表示,即阶码真值=e-127。

尾数m:23位,采用隐含尾数最高位1的表示方法,实际尾数为24位,尾数真值=1+尾数。

这种格式的非0浮点数真值为:

N=(-1)^{s}*2^{e-127}*(1+m)

关于IEEE754浮点数和十进制数之间的转换

十进制数转为IEEE754标准浮点数

例如将十进制数据10.125转换为IEEE754标准单精度浮点数(32位)格式

  1. 将十进制数据10.125转换为二进制数据为1010.001=1.010001*2^{3}
  2. 阶码E=3(真值)+127(偏置值)=130(移码),转换为二进制数为10000010。
  3. 结果0(符号位)+10000010(阶码e)+010001000000000000000000(23位尾数)
  4. 结果表示为二进制数010000010010001000000000000000000,十六进制表示为0x41220000

IEEE754标准浮点数(32位)转换位10进制数

例如将IEEE754单精度浮点数0x41220000转换位十进制数

  1. 将IEEE754单精度浮点数0x41220000转换为二进制形式为010000010010001000000000000000000
  2. 符号位s=0。
  3. 阶码10000010表示阶码值为十进制数130
  4. 尾数010001000000000000000000转换为十进制数为1*2^{-2}+1*2^{-6}=0.265625
  5. N=(-1)^{0}*2^{130-127}*(1+0.265625)=10.125

IEEE754浮点数表示的范围

格式

最值

单精度

s=0或1;e=1;m=0;

正最小值

N=(-1)^{0}*2^{1-127}*(1+0)=2^{-126}

负最大值

N=(-1)^{1}*2^{1-127}*(1+0)=-2^{-126}

s=0或1;e=254;m=0.111...1;

正最大值

N=(-1)^{0}*2^{254-127}*(1+0.11..1)=2^{127}*(2-2^{23})

负最小值

N=(-1)^{1}*2^{254-127}*(1+0.11..1)=-2^{127}*(2-2^{23})

双精度

s=0或1;e=1;m=0;

正最小值

N=(-1)^{0}*2^{1-1023}*(1+0)=2^{-1022}

负最大值

N=(-1)^{1}*2^{1-1023}*(1+0)=-2^{-1022}

s=0或1;e=2046;m=0.111...1;

正最大值

N=(-1)^{0}*2^{2046-1023}*(1+0.11..1)=2^{1023}*(2-2^{52})

负最小值

N=(-1)^{1}*2^{2046-1023}*(1+0.11..1)=-2^{1023}*(2-2^{52})

对于IEEE754的阶码全为0和全为1时有特殊的含义。

在先不考虑阶码全为0和全为1时,那么阶码的取值范围为[-126,127]

阶码

真值

0

保留

1

-126

127

0

128

1

254

127

255

保留

在阶码真值范围在[-126,127]时,尾数任意。

对于阶码全为0和全为1的情况如下

最小绝对值:尾数全为0,阶码真值最小-126,对应的阶码为00000001,此时的真值为

1.0*2^{-126}

只有当阶码1\leqslant e\leqslant 254时真值才为

N=(-1)^{s}*2^{e-127}*(1+m)

当阶码e全为0时,尾数M不全为0时,表示非规格化小数\pm (0.xx..x)_{2}*2^{-126}

当阶码e全为0时,尾数M全为0时,表示真值±0

当阶码e全为1时,尾数全为0时,表示无穷大±∞

当阶码e全为1时,尾数不全为0时,表示非数NaN(not number)

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

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

相关文章

USB转多路RS485应用-组态软件调试

前言 在工业领域,经常使用组态软件来监控和控制生产设备。组态是指不需要编写计算机程序、通过类似“配置”的方式完成工业应用开发的系统。终端设备包括仪表,PLC,传感器等,大部分支持RS485接口和Modbus协议。 运维或部署人员在实…

并发事务演示及隔离级别

引言 在MySQL数据库中,事务是一组不可分割的操作单元,这些操作要么全部成功,要么全部失败。事务的四大特性,通常被称为ACID特性,包括原子性(Atomicity)、一致性(Consistency&#x…

yolov11人物背景扣除

有时候我们需要对图片进行背景扣除和替换,本文将基于yolov11对一张图片进行背景扣除,对视频的处理同理。 安装 pip install ultralytics 2 、获取测试图片 3、代码 from ultralytics import YOLO import cv2 import nu

前海中粮创新中心附近无名路的长期免费停车点探寻

​中粮前海创新中心附近有一条无名路,我数了下大概可以停50个停车位,就是这个路需要点技巧才能进去。 ​可以看到直接从正面是开不进去的,水泥挡着了哈。但是可以观察附近地面车轮印痕就可以参考里面的车怎么停进去的哈 ​上图中的无名路是很…

基于SpringBoot+Vue+Redis+Mybatis+前后端分离旅游平台推荐系统

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:乡下小哥编程。回复 Java全套视频教程 或 前端全套视频教…

SeaTunnel Web1.0.0安装

注:安装SeaTunnel Web1.0.1没区别,步骤全部都一样。 安装的SeaTunnel为2.3.7版本,以下安装基于SeaTunnel已经安装好的场景。 一、下载包 Apache SeaTunnel ​上传到服务器上并解压 -- 路径:/data/seatunnel/apache-seatunnel…

一个月学会Java 第8天 方法与递归

Day8 方法与递归 方法这个东西我们之前讲过,但是只是讲了原理并没有详细的讲解东西,还有构造器这个东西,也只是介绍过全貌,构造器其实就是一个特殊的方法,但是由于特殊,所以我们之后再讲,还有一…

【C++】单例模式「详尽版」

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 什么是单例模式如何实现单例模式饿汉模式和懒汉模式饿汉模式懒汉模式饿汉模式和懒汉模式的优缺点1.饿汉模式的优缺点2.懒汉模式的优缺点 什么是单例模式 C单例模式是一种非常重要的设计模式&#xf…

看历史远比看未来更加清楚,太像了

目录 ‌1994年8月,中国进行了分税制改革 ‌2024年9月,中国经济经历了一系列显著的经济变化和政策调整。‌ 经济政策密集出台 资本市场反应热烈 制造业趋稳运行 外汇储备保持稳定 信心与预期提升 ‌2024年10月,股市回调和消费市场的活跃 ‌1994年8月,中国进行了分税…

通过SE38编写一个报表

该编写操作重点在于理解语法基础,并不具有实际意义。 然后进入代码编辑界面。 首先定义X M Z三个字段的类型为C(字符类型),最大长度为10然后给X M进行赋值第三步使用ABAP链接语句,把X M两个值进行链接在屏幕上输出Z值。…

SVM及其实践1 --- 概念、理论以及二分类实践

说明 SVM(support vector machine,支持向量机)的理论其实是很漂亮的,只是对于初学者而言有点晦涩难懂和繁琐(特别是诸多的公式推导)。因为其经典且应用范围广,其实网上(各编程语言)已经有很多很成熟的包/函数可以直接调用,而且有关SVM的比较细…

Spring Boot教学资源库:开发者的成长之路

2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…

llama3 implemented from scratch 笔记

github地址:https://github.com/naklecha/llama3-from-scratch?tabreadme-ov-file 分词器的实现 from pathlib import Path import tiktoken from tiktoken.load import load_tiktoken_bpe import torch import json import matplotlib.pyplot as plttokenizer_p…

大数据新视界 --大数据大厂之 GraphQL 在大数据查询中的创新应用:优化数据获取效率

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

12.2 Linux_进程间通信_共享内存

概述 什么是共享内存: 共享内存又叫内存映射,可以通过mmap()映射普通文件。 实际上就是将磁盘中的一个文件映射到内存的一个缓冲区中去,这样进程就可以直接将这块空间当作普通内存来访问,不需要再使用I/O中的read/write去访问这…

霍普菲尔德(Hopfield)神经网络求解旅行商问题TSP,提供完整MATLAB代码,复制粘贴即可运行

Hopfield神经网络是以美国物理学家约翰霍普菲尔德(John Hopfield)的名字命名的。他在1982年提出了这种类型的神经网络模型,因此通常被称为Hopfield网络。旅行商问题(Traveling Salesman Problem,TSP)是一个…

IEDA创建文件模板

1、点击设置-编辑器-文件与代码模板 2、输入对应的名称、扩展名、文件名 3、复制模板代码-点击应用、确定即可 4、新建配置项目,右键点击新建选择SpringMVC即可(刚刚模板中的名称)

D32【python 接口自动化学习】- python基础之输入输出与文件操作

day32 文件编码 学习日期:20241009 学习目标:输入输出与文件操作﹣-44 文件编码: 如何解决不同操作系统的文件乱码问题? 学习笔记: 为什么产生乱码 常见操作系统的文件编码 以不同的编码打开文件 # 以gb…

Linux学习网络编程学习(TCP和UDP)

文章目录 网络编程主要函数介绍1、socket函数2、bind函数转换端口和IP形式的函数 3、listen函数4、accept函数网络模式(TCP&UDP)1、面向连接的TCP流模式2、UDP用户数据包模式 编写一个简单服务端编程5、connect函数编写一个简单客户端编程 超级客户端…

如何实现不同VLAN间互通?

问题描述 客户要求不同VLAN的PC机互通,如下图拓扑所示。 此外,仅允许在设备 LSW3 上进行配置修改。 分析 由于所有的PC都在同一个网段,当任何一个设备想要和另一个设备通信时,它会首先根据数据交互的流程广播一个ARP请求报文来获…