IEEE754 浮点数表示

单精度浮点数标准化过程在硬件中的实现详解 深入拆解单精度浮点数在FPGA或ASIC中完成规格化(Normalization)的关键步骤:前导零计数、指数修正与尾数移位,聚焦IEEE 754标准下如何用组合逻辑与流水线高效完成对齐与舍入。单精度浮点数的硬件路径设计直接决定计算吞吐与功耗表现。 阅读详情
 

IEEE754 浮点数表示

IEEE754 浮点数标准是当今在计算机中使用最为普遍的浮点数表示方法。这篇文章将对IEEE浮点数表示方法给出一个简短的介绍。

1.       什么是浮点数

计算机中小数的小数点并不是用某个数字表示的,而是用隐含的小数点的位置来表示的。根据小数点的位置是否固定,又可以分为定点表示和浮点表示。浮点数顾名思义就是小数点不固定,是浮动的,要处理的数既有整数部分又有小数部分。在计算机中一般采用浮点表示方法。

2.       存储结构

IEEE浮点数由三个基本的部分组成:符号(Sign)、指数(Exponent)和尾数(mantissa)。其中尾数由分数(fraction)和隐含的前导数字(leading digit)组成。指数的基数为2。下面给出单精度和双精度浮点数的存储结构。

 

Sign

Exponent

Fraction

Bias

Single Precision

1[31]

8[30-23]

23[22-0]

127

Double Precision

1[63]

11[62-52]

52[52-0]

1023

2.1. 符号位

       0: 正数   1: 负数

2.2. 指数

指数应该既能表示正数也能表示负数。为了实现找个目的,存储的指数在实际的指数上被加上一个偏差。对于IEEE单精度数而言,这个偏差是127(双精度为1023)。

2.3. 尾数

       尾数位的多少反映了数的精确程度。它由一位隐含的前导位和分数位组成。前导位为1,不需要显示表示出来。这样,尾数实际上由24位组成。

3.       浮点数表示范围

正浮点数的表示范围可以被分成规范化的数和非规范化的数(只用了一部分分数的精度)。

 

Denormalized

Normalized

Approximate Decimal

Single Precision

± 2-149 to (1-2-23)×2-126

± 2-126 to (2-2-23)×2127

± ~10-44.85 to ~1038.53

Double Precision

±2-1074 to (1-2-52)×2-1022

± 2-1022 to (2-2-52)×21023

± ~10-323.3 to ~10308.3

有五个不同的数值范围单精度数不能表示。

¨         小于-(2-2-23) × 2127的负数:(negative overflow)

用规范化形式表示的浮点数最小负数为:-(2-2-23) × 2127,其内存表示为:

1 11111110 11111111111111111111111

¨         大于-2-149的负数:(negative underflow)

用非规范化形式表示的浮点数最大负数为:-2-149,其内存表示为:

1 00000000 00000000000000000000001

¨         零:0最为一种特殊值进行处理

¨         小于2-149的负数:(positive underflow)

用非规范化形式表示的浮点数的最小正数为:2-149 ,其内存表示为:

0 00000000 00000000000000000000001

¨         大于(2-2-23) × 2127的正数:(positive overflow)

用规范化的形式表示的浮点数的最大正数为:-(2-2-23) × 2127,其内存表示为:

1 11111101 11111111111111111111111

上溢指的是所要表示的数值太大以至于不能被表示,下溢不太严重,因为它只表示精度的损失。可以通过接近零得到保证。

这样IEEE浮点数所能表示的有效范围如下表:

 

Binary

Decimal

Single

± (2-2-23) × 2127

~ ± 1038.53

Double

± (2-2-52) × 21023

~ ± 10308.25

4.       特殊值

IEEE保留了指数域全零和全1表示不同的特殊值。

¨         零(Zero)

由于前导1的原因,0不能以正常的形式在浮点数中表示出来,必须以特殊值的形式对待。零是一个指数域和尾数域全零的特殊值,有+0和-0之分,但他们相比较是相等的。

¨         非规范化

如果指数全零,而尾数不为零,那么这就是一个非规范化的数,它并不假定前导1的存在。

¨         无穷

无穷是通过指数域全1,尾数域全0表示的。符号位区分正无穷和负无穷。

¨         不是一个数(Not A Number)

NaN用于表示一个并不是真实数字的值。NaN是通过指数域全1,尾数域不为零表示的。由两种NaN:QNaN(Quiet NaN)和SNaN(Signalling NaN)。

关于这两种NaN的区别,可以参考下面的英文解释:

A QNaN is a NaN with the most significant fraction bit set. QNaN's propagate freely through most arithmetic operations. These values pop out of an operation when the result is not mathematically defined.

An SNaN is a NaN with the most significant fraction bit clear. It is used to signal an exception when used in operations. SNaN's can be handy to assign to uninitialized variables to trap premature usage.

Semantically, QNaN's denote indeterminate operations, while SNaN's denote invalid operations.

5.       特殊操作

特殊值上的操作在IEEE中被良好的定义。简单的情况是任意的包含NaN的操作都产生NaN。其他操作如下:

Operation

Result

n ÷ ±Infinity

0

±Infinity × ±Infinity

±Infinity

±nonzero ÷ 0

±Infinity

Infinity + Infinity

Infinity

±0 ÷ ±0

NaN

Infinity – Infinity

NaN

±Infinity ÷ ±Infinity

NaN

±Infinity × 0

NaN

 

6.       总结

下面给出了表示一种表示方法对应的值:(b = bias)         

Sign

Exponent(e)

Fraction(f)

Value

0

00..00

00..00

+0

0

00..00

00..01

11..11

正非规范化数:

0.f × 2(-b+1)

0

00..01

11..11

00..00

11..11

正规范化数:

1.f × 2(e-b)

0

11..11

00..00

+Infinity

0/1

11..11

00..01

01..11

SNaN

0/1

11..11

10..00

11..11

QNaN

1

00..00

00..00

-0

1

00..00

00..01

11..11

负非规范化数:

-0.f × 2(-b+1)

1

00..01

11..10

00..00

11..11

负非规范化数:

1.f × 2(e-b)

1

11..11

00..00

-Infinity

 

IEEE 754 浮点数的表示精度探讨 前言 从网上看到不少程序员对浮点数精度问题有很多疑问,在论坛上发贴询问,很多热心人给予了解答,但我发现一些解答中有些许小的错误和认识不当之处。我曾经做过数值算法程序,虽然基本可用,但是被浮点数精度问题所困扰;事情过后,我花了一点时间搜集资料,并仔细研究,有些心得体会,愿意与大家分享,希望对IEEE 754标准中的二进制浮点数精度及其相关问题给予较为详尽的解释。当然,文中任何错误由本人造成,由我 阅读详情

相关推荐

IEEE754浮点数规格化表示

使用IEEE754工业标准规格化浮点数步骤详解

dingzhenli1993的博客 3万+

计算机的浮点数表示法(IEEE 754)

题目来自于CMU15-213/lab/datalab,本文章讲述浮点数在计算机底层的表示的相关知识

默示MoS的博客 1169

IEEE574,IEEE4浮点数转换工具源码

IEEE574,IEEE4浮点数转换工具,内有CRC16,CHECKSUM,LRC检验计算工具软件(其中LRC是台达PLC中的方法)源码

计算机组成与设计(2)-----指令_1

思维导图     一.引言 指令是机器语言的基本组成单位,是一串二进制码.各种各样的指令使得机器进行不同的操作.由一个机器所有指令的集合,就叫做指令集.当前流行的指令集有ARM7,ARM8,MIPS,Intel x86,本文以MIPS指令集举例. 存储程序:我们将一系列的指令和数据以数字形式存放于存储器中,就成为了存储程序,以便于日后使用 寄存器:寄存器的主要功能就是用于数据的快速...

zh328271057的博客 7286

LabVIEW面向对象编程:操作者框架入门实战

本文是LabVIEW面向对象编程中操作者框架的入门实战指南。针对传统“面条式代码”在复杂项目中的维护难题,文章通过创建操作者、定义消息与处理函数、在主VI中调用等步骤,详细演示了如何利用操作者框架构建模块化、易扩展的应用程序架构,有效管理并行任务。

f0g1h2的博客 590

告别手册!S32K3XX的eMIOS实战:从GPT定时到PWM输出,一个通道搞定电机控制

本文深入探讨了NXP S32K3XX系列MCU的eMIOS模块在电机控制中的高效应用。通过单通道实现PWM生成、输入捕获和定时中断三大功能,展示了如何简化BLDC电机控制硬件设计。文章结合RTD库与寄存器级编程,提供动态模式切换和性能优化方案,显著降低CPU负载。

weixin_42522374的博客 147

浮点数的规格化表示

浮点机器数的表示方法。

zyq200399的博客 7513

ModbusRTU串口读写报文解析

解析MODBUS报文的格式,讨论异常状态、读多个寄存器与写多个寄存器

Serendipitor的博客 9211

IEEE 754规格化浮点数所能表示的最大值和最小值

文章目录IEEE 754标准IEEE 754标准浮点数格式:IEEE 754浮点数格式:浮点数的最大值和最小值浮点数的最大绝对值浮点数的最小绝对值浮点数的最大值短浮点数所能表示的最大规格化正数:短浮点数所能表示的最大规格化负数:浮点数的最小值短浮点数所能表示的最小规格化正数:短浮点数所能表示的最小规格化负数:长浮点数同理 IEEE 754标准 IEEE 754标准浮点数格式: 阶码用移码表示 移码=阶码真值+偏置值 阶码真值=移码-偏置值 偏置值的公式为: 移码(这里的移码看作无符号

赵士杰——成功并非一蹴而就,而是在持之以恒的努力中逐渐实现。 4万+

ctftools-all-in-one使用说明

OAEP (Optimal Asymmetric Encryption Padding) 是一种用于RSA加密的填充方案,目的是提高RSA加密的安全性。在CTF比赛中,如果模数N的两个因子比较接近,使用"费马分解(N)"可能会更快地得到结果;OAEP 是 RSA 的一种标准填充方式(在 PKCS#1 v2.0+ 中定义),因此这类题目本质上仍是 RSA 题,但。,导致你不能直接用常规的 RSA 解密公式 �=�� mod �m=cdmodN 得到有意义的明文。如果你在 CTF 中遇到 RSA 题,

2501_91682449的博客 1718

三维荧光光谱(EEM)散射干扰实战:从识别到精准切除的完整流程

本文详细解析三维荧光光谱(EEM)中散射干扰的识别与精准切除流程,涵盖瑞利散射和拉曼散射的实战处理技巧。通过drEEM工具箱的应用示例和高级场景解决方案,帮助研究者有效消除散射干扰,提升数据准确性,特别适用于环境样品和生物活体样本分析。

weixin_42554042的博客 327

一文读懂 IEEE754 浮点数表示方法

浮点数(Floating-point Number)是对实数的一种近似表示,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次幂得到。以这种表示法表示的数值,称为浮点数。

Doublelv 的博客专栏。 12万+

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 988

浮点数表示(IEEE 754)

引入 N=S×rj N = S×r^j N=S×rj N:浮点数 S:尾数 r:基数 j:阶码 举个例子: 123.456=1.23456×102 123.456 = 1.23456×10^{2} 123.456=1.23456×102 其中123.456是浮点数,1.23456是尾数,10是基数(10进制),2是阶码。 可以发现,表示123.456的方法不唯一,比如: 123.456=12.3456×101=0.123456×103=0.0123456×104=... 123.456 = 12.345

m0_52733659的博客 6148

RuntimeError: The current installed version of g++ (4.8.5) is less than the mininum version CUDA解决方案

本文主要介绍了RuntimeError: The current installed version of g++ (4.8.5) is less than the mininum version CUDA解决方案,希望能对学习python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

ArcGIS Pro 制作这种地图海报

ArcMap 版本与 ArcGIS Pro 版本的制图功能相差太多,无论从美观上还是制图效率都远远优于 ArcMap,用了一段时间的 ArcGIS Pro ,真心推荐有条件的大家赶紧试一试!一个软件也能搞定一张不错的海报哦!----吐槽:好的设计真的是门花时间的活,这个教程大概花了我7小时左右,我都忘了我自己教程中截图多少张了!(可能是我速度太慢了)测试数据:阿里云盘分享-----北极海冰数据.https://www.aliyundrive.com/s/SUhsnqfkmXh。

J_Giser的博客 1429

IEEE754浮点数的表示

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

FPGA开发 | 高速接口与数字IC设计 2383

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEEE754标准表示浮点数(详解)

在IEEE 754 格式浮点数分 3 个类型的浮点数:分别是 短浮点数 float,长浮点数 double,临时短浮点数 long double,由 3 个部分组成,分别是 符号码,阶码,尾数码。

Kk的博客 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEEE754 -浮点数的表示

以 3.143.143.14 举例:双精度浮点数使用64位表示,格式如下:

dmf_fff的博客 1916

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【计算机组成原理】浮点数的表示及IEEE 754规格化

浮点数在计算机中起着至关重要的作用。在位数固定的情况下,定点数能表示的数字范围有限,而浮点数则可以在相同的位数下扩大数的表示范围,同时尽可能地保持有效精度。而计算机中的浮点数不论是从储存还是运算都与我们生活中的计算方式大相径庭,所以初学者在刚刚学习时总是很难理清规格化IEEE及运算原理,这里笔者就从自己的理解出发,根据哔站王道考研课程及其教材进行一下难点总结总思路图如下本篇博文对浮点数的表示及IEEE 754规格化做了一个较为详细的介绍,不知道对你有没有帮助呢觉得博主写得还不错的三连支持下吧!

2301_77954967的博客 1万+

浮点数的表示—IEEE754标准

简单解释IEEE754浮点数标准

Uncommon的博客 3195

浮点数 IEEE754表示

1.a = m × b^e m:尾数(即定点数) b:基数 e:阶码 2. 表示结构: 诶,看似简单的浮点数,实则暗藏玄机 单精度浮点数转十进制 【计算机组成原理】IEEE754单精度浮点数转十进制_哔哩哔哩_bilibili 十进制转IEEE754单精度浮点数格式 ...

nature_ph的博客 1875

IEEE Standard 754(浮点数二进制表示)以及浮点数运算

我们将10.11100向上舍入到11.00,而10.10100向下舍入到10.10,因为这些值是两个可能值的中间值,并且我们倾向使最低有效位为0。相反,如果我们总是把两个可表示值中间的数字向下舍入,那么舍入后的一组数的平均值将比这些数本身的平均值略低一些。这样有一半的时间向上舍入,而有一半的时间向下舍入。计算机中的浮点数定点表示时小数点的位置是固定的,在小数的数值位的最前面,为了避免阶码较大的浮点数尾数左移导致最高位的丢失。如图展示了四种舍入方式,向0舍入,向正无穷舍入,向负无穷舍入,向最近偶数舍入。

CookieQuWHU的博客 2543

详解IEEE标准754:浮点数的表示

本文转载自作者Lolita@linuxsir.org 一、背景 在IEEE标准754之前,业界并没有一个统一的浮点数标准,相反,很多计算机制造商都设计自己的浮点数规则,以及运算细节。那时,实现的速度和简易性比数字的精确性更受重视。   直到1985年Intel打算为其的8086微处理器引进一种浮点数协处理器的时候,聪明地意识到,作为设计芯片者的电子工程师和固体物理学家们,也许并不能通过数值分析来选择最合理的浮点数二进制格式。于是Intel在请加州大学伯克利分校的...

qq_41904729的博客 4974

ieee754双精度浮点数转换_浮点数的二进制表示(IEEE 754标准)

浮点数是我们在程序里常用的数据类型,它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇,以此记录,作为学习笔记并分享。现代计算机中,一般都以IEEE 754标准存储浮点数,这个标准的在内存中存储的形式为:对于不同长度的浮点数,阶码与小数位分配的数量不一样,如下:对于32位的单精度浮点数,数符分配是1位,阶码分配了8位,尾数分配了是23位。根据这个标准,我们来尝试把一个十进制的浮点数转换为I...

weixin_39581972的博客 2026

详解IEEE 754标准(浮点数的二进制表示)

浮点数是我们在程序里常用的数据类型,它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇,以此记录,作为学习笔记。 现代计算机中,一般都以IEEE 754标准存储浮点数,这个标准的在内存中存储的形式为: 对于不同长度的浮点数,阶码与小数位分配的数量不一样,如下: 对于32位的单精度浮点数,数符分配是1位,阶码分配了8位,尾数分配了是23位。   根据这个标准,我们来尝试把一个十进制...

sanqianjia的博客 5220
上一篇: 回车和换行
下一篇: 内存字节对齐
mindview
博客等级 码龄19年 7粉丝 10原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值