IEEE754、linear11、linear16浮点数应用原理

IEEE754、linear11、linear16浮点数应用原理

  • 1 浮点数应用
    • 1.1 IEEE754 浮点数标准
    • 1.2 PMBUS浮点数格式
  • 2 浮点数原理
    • 2.1 IEEE754 浮点数解析
    • 2.2 PMBUS浮点数解析
  • 3 浮点数代码应用
    • 3.1 IEEE754 浮点数应用
      • 3.1.1 将浮点变量赋值,直接打印整型(32位)变量
      • 3.1.2 将整型(32位)变量赋值,直接打印浮点数变量
    • 3.2 PMBUS 浮点数应用
      • 3.2.1 浮点数转化为linear11格式
      • 3.2.2 浮点数转化为linear16格式
      • 3.2.3 linear格式转化为浮点数
  • 4 总结

1 浮点数应用

1.1 IEEE754 浮点数标准

IEEE754标准,规定可4种标识浮点数值得方式,分别是但精确度(32位)、
双精度(64位)、延伸单精度(43bit以上)、延伸双精度(79bit以上)。其中32位模式有强制要求,其他都是选择性的。C语言float通常指单精度,double通常指双精度浮点数。

1.2 PMBUS浮点数格式

PMBUS中数据格式通常指线性数据格式(linear格式),常见应用格式有linear11和linear16。

2 浮点数原理

2.1 IEEE754 浮点数解析

以32位浮点数为准进行解析,长度32位浮点数的存储格式为4个字节,发送时按尾数低位、尾数中位、尾数高位、阶码及符号位的先后顺序。格式如下表所示。
符号位S 阶码位 E 尾数位 M (小数部分参数)
D31 D30-D23 D22-D16 D15-D8 D7-D0
浮点数符号 阶码 尾数高位 尾数中位 尾数低位

在这里插入图片描述

浮点数值 = (-1)S * 2(E-127) * (1 + M2(-23))
例如1:当32位浮点数为40H、A0H、00H、00H,即S=0,E=129,M=221,则:
浮点数值 = (-1)0 * 2(129-127) * (1 + 221
2(-23))= 141.25=5.0 。
例如2:一个浮点数4.538,推算出IEEE754(32)标准二进制表示,则
(1)小数部分(最高23位00~22)
位00:0.538 *2 = 1.076 **** 取1
位01:0.076 *2 = 0.152 **** 取0
位02:0.152 *2 = 0.304 **** 取0
位03:0.304 *2 = 0.608 **** 取0
位04:0.608 *2 = 1.216 **** 取1
位05:0.216 *2 = 0.432 **** 取0
位06:0.432 *2 = 0.864 **** 取0
位07:0.864 *2 = 1.728 **** 取1
位08:0.728 *2 = 1.456 **** 取1
位09:0.456 *2 = 0.912 **** 取0
位10:0.912 *2 = 1.824 **** 取1
位11:0.824 *2 = 1.648 **** 取1
位12:0.648 *2 = 1.296 **** 取1
位13:0.296 *2 = 0.592 **** 取0
位14:0.592 *2 = 1.184 **** 取1
位15:0.184 *2 = 0.368 **** 取0
位16:0.368 *2 = 0.736 **** 取0
位17:0.736 *2 = 1.472 **** 取1
位18:0.472 *2 = 0.944 **** 取0
位19:0.944 *2 = 1.888 **** 取1
位20:0.888 *2 = 1.776 **** 取1
位21:0.776 *2 = 1.552 **** 取1
位22:0.552 *2 = 1.104 **** 取1
(2)则对于4.538的二进制表示
二进制:100.10001001101110100101111
尾数的要求转换:1.0010001001101110100101111 * 22整数位为1,小数点变换的位数n为2的n次,往左移动为正n,往右移动为负n。
所以阶码为:2+127=129 ,尾数为:0010001001101110100101111 (25位)
符号位为:0(正数),尾数位23位,0010001001101110100101111最后两位(11)去掉,第24位0舍1入。
则二进制32位:01000000100100010011011101001011+1
所以4字节为0x 40 91 37 4C。
同理,双精度浮点数变换原理相同,只是各部分尾数有差异而已。

2.2 PMBUS浮点数解析

(1)linear11格式解析
linear11数据格式由2个字节组成
字节1 字节0
N(为补码)(指数) Y(为补码)(尾数)
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
在这里插入图片描述

转换时,需将N Y转化为其原码进行计算
linear11数据数值 = Y(原码)* 2N(原码)。(Y:-1024+1023,N:-16+15)
例如1:linear11数据为0x97AB,解析数据:
(1)N = 0b10010,Y=0b11110101011,
N(原码)= 0b11110 = -14;
Y(原码)= 0b10001010101 = -85;
(2)数值 = -85 * 2-14,
例如2:数值为-45.39转化为linear11格式如何计算:
(1)先取Y值,将数值逐次乘以2,使得结果在±512~±1024之间,-45.39乘以2的4次方为-726.24,然后四舍五入取整为-726为Y值,
(2)N值为第一步的4次,取反,为-4
(3)最终结果为0xE52A
例如3:数值为-0.007转化为linear11格式如何计算:
(1)先取Y值,将数值逐次乘以2,使得结果在±512±1024之间,-0.007乘以2的16次方为-458.752,N值范围为(N:-16+15),所以不能继续乘2,然后四舍五入取整为-459为Y值,
(2)N值为第一步的16次,取反,为-16
(3)最终结果为0x8635

根据以上举例可知确定,在原有的数据基础上进行乘2(最大16次)运算,或者除2(最大15次)运算,若超次数则立即停止,在不超次数情况下使结果数据 坐落在±512~±1024之间,然后确定Y值和N值。
同理linear16原理雷同,注意各部分的数值范围。

3 浮点数代码应用

3.1 IEEE754 浮点数应用

使用共用体的方式实现数据快速格式转换,编译器会自动将单精度或者双精度浮点数存储在内存中,存储在内存中的数据就是16进制格式,故我们使用共用体实现数据快速转换,不需要进行数据推演,示例如下:

3.1.1 将浮点变量赋值,直接打印整型(32位)变量

在这里插入图片描述

3.1.2 将整型(32位)变量赋值,直接打印浮点数变量

在这里插入图片描述

3.2 PMBUS 浮点数应用

3.2.1 浮点数转化为linear11格式

根据在原有的数据基础上进行乘2(最大16次)运算,或者除2(最大15次)运算,若超次数则立即停止,在不超次数情况下使结果数据 坐落在±512~±1024之间,然后确定Y值和N值。代码如下。
在这里插入图片描述

3.2.2 浮点数转化为linear16格式

在原有的数据基础上进行乘2(最大16次)运算,或者除2(最大15次)运算,若超次数则立即停止,在不超次数情况下使结果数据 坐落在±16384~±32768之间,然后确定Y值和N值。代码如下。

在这里插入图片描述

3.2.3 linear格式转化为浮点数

根据公式,数据数值 = Y(原码)* 2N(原码)的格式,首先位定义我们使用有符号形式定义,然后获取对应Y和N值,引用math.h头文件,包含了pow函数,即可实现数据转换。
(1)linear11转化为浮点数。
在这里插入图片描述

(2)linear16转化为浮点数。
在这里插入图片描述

4 总结

关于IEEE754和PMBUS浮点数的运算常见的就是以上几种,实际使用时运用了结构体及共用体定义数据类型,运算中不必再次进行位运算等操作,关于结构体及共用体已在前面中有指导代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python兴趣编程百例:手把手带你开发一个图片转字符图的小工具

在数字世界的无尽探索中,我们时常被那些看似平凡的技术所启发,它们如同星辰般点缀着我们的创意天空。今天,我突发奇想,想要用Python开发一个将图片转化为字符画的小工具。这不仅是一次技术的实践,更是一场艺术与科技的…

STM32学习笔记(三)--EXTI外部中断详解

(1)配置步骤1.配置RCC 打开外设时钟2.配置GPIO 选择端口输入模式3.配置AFIO 选择要用的一路GPIO 连接至EXTI 4.配置EXTI 选择边沿触发方式 上升沿 下降沿 双边沿 选择触发响应方式 中断响应 事件响应 5.配置NVIC 选择一个合适的优先…

乡村养老服务管理系统的设计

管理员账户功能包括:系统首页,个人中心,医疗人员管理,乡村志愿者管理,文娱活动管理,活动报名管理,医疗保健管理 前台账户功能包括:系统首页,个人中心,文娱活…

运维技术栈总结

文章目录 Linux CommandBasecd/lschmod/chown/chgrpvi/vimscptarsudf Installrpmyumdeb/apt Filtertailgrepawkfindnetstatechotelnetwhereistouch/mkdirgzip/rar/tar Statistics Linux MonitorCPUtophtopsar Memoryfreevmstat I/Oiostatpidstatiotop Networknetstatiftoptcpdu…

Azure创建虚拟机

Azure创建虚拟机 一、创建步骤(1)登录到Azure portal(2)启动新实例(3)填写必要信息选择系统镜像(4)选择实例类型(5)配置管理员帐户和入站端口规则(6) 磁盘:保持默认(7) 网络:保持默认(8) 管理:保持默认(9) Monitoring:Boot diagnostics选择Disable(10) 最后直接点击查看 + …

屏蔽房是做什么用的?为什么需要定期检测?

屏蔽房对于不了解的人来说,可能光看名字不知道是做什么的,但是对于一些企业或者机构,却是再熟悉不过的了。和名字一样,屏蔽房是对空间内的信号以及一些外界环境条件进行隔绝,在一些有特殊要求的企业机构中,…

STM32中五个时钟源:HSI、HSE、LSI、LSE、PLL

时钟系统是处理器的核心,或者说时钟是单片机的心脏。 1.单片机内部需要储存器、累加器,这些都需要逻辑门电路。比如锁存器就是一个D触发器,而触发器的置1、清0、置数的功能都需要跳变沿。D触发器就是上升沿后存入数据,而这个上升…

硬件电路基础【5.二极管】

二极管 前言一、基本原理1.1 介绍1.2 结构组成1.3 符号1.4 正负极判断 二、特性参数开关电路注意的参数极限特性电气特性特性曲线 三、应用场景稳压二极管原理故障特点连接方式参数最大额定参数电气特性特性曲线 应用典型的串联型稳压电路过压保护稳压二极管的应用与选择 肖特基…

如何使用ChatGPT等大模型翻译视频?2024最新翻译技巧分享

随着全球化的浪潮,跨语言沟通的需求日益增长。视频,作为一种生动直观的表达方式,也越来越需要跨越语言的障碍,触达更广泛的受众。因此,视频翻译成为了一个重要的领域,为不同语言背景的人们打开了理解彼此、…

ChatGPT的问题与回复的内容导出(Chorme)

我给出两种方式,第一种方式无使用要求,第二种方式必须安装Chorme 个人更推荐第二种方式 第一种方式:使用chatgpt自带的数据导出 缺点:会将当前未归档的所有聊天记录导出,发送到你的电子邮箱中 第二种方式&#xff1a…

基于STM32的智能水产养殖系统(三)

智能水产养殖系统设计 背景 智能水产养殖系统的设计背景主要源于对传统养殖方式的现代化需求和技术进步的推动。以下是该背景的详细阐述: 现代化养殖需求增加: 随着人口增长和食品需求的提升,传统的水产养殖方式面临诸多挑战,如资…

基于51单片机的脉搏测量仪—心率计

基于51单片机的脉搏测量仪 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 本系统由STC89C51/52单片机LCD1602显示模块5mm红外接收管LM358运放电路按键模块等构成 1.手指放到红外对管中,2…

带你走进CCS光源——环形低角度光源LDR2-LA系列

机器视觉系统中,光源起着重要作用,不同类型的光源应用也不同,选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用环形低角度光源LDR2-LA系列。 LDR2-LA系列 采用柔性基板,创造最佳倾斜角度。 通过从低角度向…

微信小程序 - 出于性能原因,对长行跳过令牌化。长行的长度可通过 “editor.maxTokenizationLineLength” 进行配置

问题描述 出于性能原因,对长行跳过令牌化。长行的长度可通过 “editor.maxTokenizationLineLength” 进行配置。 解决方案 设置 - 编辑器设置 - 更多编辑器设置... 搜索:maxtoken,原来是 20000,我改成了 200000 即可~

海南云亿商务咨询有限公司抖店开店怎么样?

在数字化浪潮席卷全球的今天,电商行业日新月异,其中抖音电商以其独特的短视频直播模式,迅速崛起成为电商领域的新贵。海南云亿商务咨询有限公司,作为抖音电商服务的佼佼者,凭借专业的团队和丰富的经验,致力…

批量导出兜底回复对话,迭代优化聊天机器人 | Chatopera 云服务

持续优化知识库 聊天机器人的知识库,对话技能,需要长期的优化。这是因为,一方面,初期上线的机器人所依赖的数据量通常有限;另一方面,市场不断变化,客户产品新的问题。 上线聊天机器人的目的之…

基于Django、Bootstrap的电影推荐系统,算法基于用户的协同过滤算法,有爬虫有可视化后台

背景 基于Django和Bootstrap的电影推荐系统结合了用户协同过滤算法,通过爬虫技术获取电影数据,并在可视化后台展示推荐结果。该系统旨在提供个性化的电影推荐服务,帮助用户发现符合其喜好的电影。 用户协同过滤算法是一种常用的推荐算法&am…

蓝卓创始人褚健:工厂操作系统+APP,加速工业数字化转型

如何让众多的中小企业通过低成本的方式实现收益,享受到工业互联网、数字化转型带来的效益,是解决中小企业数字化转型难的核心问题。 中小企业规模庞大,数字化转型压力巨大 褚健表示,中国拥有最庞大的工业企业集群,全国…

STM32高级控制定时器(STM32F103):PWM输出模式

目录 概述 1 PWM模式介绍 2 PWM类型 2.1 PWM边缘对齐模式 2.2 PWM中心对齐模式 3 使用STM32Cube配置PWM 3.1 STM32Cube配置参数 3.2 生成Project 4 设置PWM占空比 4.1 函数介绍 4.3 函数源码 5 测试代码 5.1 编写测试代码 5.2 函数源码 6 运行代码 概述 本文主…

29. 透镜阵列

导论: 物理传播光学(POP)不仅可以用于简单系统,也可以设计优化复杂的光学系统,比如透镜阵列。 设计流程: 透镜阵列建模 在孔径类型中选择“入瞳直径”,并输入2 在视场设定中。设置一个视场&…