0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机浮点数运算的源码设计

GReq_mcu168 来源:未知 作者:邓佳佳 2018-03-07 15:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单片机的一个浮点数一般在KeilC51中是以4字节形式存储的,格式严格遵循IEEE-754标准。在单片机二进制数据中,浮点数用两个部分来表示,基C为2,E为阶码,M为尾数,E的保存形式是一个0~255的8位值,指数的实际表示值是保存值减去127,范围在-127~+128的数,尾数是一个24位值,换算7个十进制数,最高位通常是1,符号位表示浮点数的正负。

现在看怎样显示一个浮点数,由于浮点数的尾数是24位,最高可以表达的整数值为16777215,用科学计数法表示时整数部分占据1位,小数部分就可以有6位,我们将浮点数的尾数放在长整形数据longint中保存,阶码可以在int型数据中保存。此处我们用C程序来实现显示一个浮点数的功能。

(1)浮点数显示子函数。

}}

(2)显示十进制尾数和阶的子函数。

在大多数的单片机应用系统中都不能离开数值计算,最基本的数值运算为四则运算,单片机中的数都是以二进制形式表示的,二进制的算法有很多,其中最基本的是定点制和浮点制,以上介绍了浮点数在单片机中的表示方式和汇编子程序,浮点数比定点数加减法要困难,但是克服了定点数表示范围小的问题,总之定点数和浮点数各有各得的特点,读者可以在实际运用中加以优化运用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45335

    浏览量

    663293

原文标题:51单片机执行指令的过程

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用VScode的PIO开发GD32VF103,但是串口无法打印浮点数怎么解决?

    我最近在使用VScode的PIO开发GD32V,使用的是longan的模板,但是我将串口输出重定义到printf函数中,发现无法使用%f输出浮点数,想问问应该怎么配置,我看到的一种说法是在
    发表于 11-06 06:49

    点数表示实数的方法以及定点数在硬件上的运算验证

    本篇主要介绍定点数表示实数的方法以及定点数在硬件上的运算验证 为什么选定点数 32位单精度浮点数: 32位的单精度
    发表于 10-28 08:13

    E203添加浮点数方法:译码和派遣模块设计

    添加浮点数方法:寄存器设计》,可以总结出如下的电路结构图: 图中黑色部分是原 E203 的 IFU 部分结构图,这里只拿 rs1 作为例子画了出来。图中红色部分是笔者参照原电路画出的浮点相关电路
    发表于 10-24 13:54

    E203添加浮点数方法:FPU控制逻辑

    指令的全部运算都集中在了 FPU 当中。对于指令周期的设计,笔者将除了除法、开方和浮点数存取指令以外的指令都设计为单周期指令(实际中为2周期,原因在于 OITF 的原理),这也是为什么原 E203 代码
    发表于 10-24 13:28

    蜂鸟E203扩展浮点指令设计(1)

    ,采用单独的乘法器。 (2)对于除法和开放运算,可以采用迭代法,采用状态进行运算。乘法器可以复用整数乘法器节约资源。 2.3浮点数比较指令 指令格式: fmin.s rd, rs1
    发表于 10-24 10:00

    浮点数是如何实现开平方运算

    摘要: 本文主要描述浮点数是如何实现开平方运算的。 简介 事实上,浮点数的开平方运算结构与定点数甚至整数的开平方
    发表于 10-24 08:42

    (九)浮点乘法指令设计

    ⊕ sb,得到结果的符号位 阶码相加减 按照定点整数的加减法运算方法对两个浮点数的阶码进行加减运算,因为规格化数的价码e满足1≤e≤254,而ec有可能超出1~254范围,所以当1≤ec≤254,相乘结果
    发表于 10-24 07:11

    浮点运算单元的设计和优化

    的,和整数长度一致。 2.浮点运算指令实现:蜂鸟E203可以通过在EXU内添加一个与ALU平行的模块:浮点处理单元(float point unit),专用于处理浮点指令。该单元可以更
    发表于 10-22 07:04

    risc-v中浮点运算单元的使用及其设计考虑

    的应用。 在RISC-V中,浮点运算单元分为单精度浮点数(32位)和双精度浮点数(64位),通常包括以下几种基本功能: 加法器/减法器:用于执行浮点
    发表于 10-21 14:46

    大彩讲堂:VisualHMI-LUA教程-获取设置单精度浮点数函数的应用

    软件开发中各种协议对浮点数数据进行获取和赋值处理。get_float(vtype,addr)读取单精度浮点数(float)寄存器,返回有符号单精度浮点数·vtype:数
    的头像 发表于 10-16 00:00 1222次阅读
    大彩讲堂:VisualHMI-LUA教程-获取设置单精度<b class='flag-5'>浮点数</b>函数的应用

    PRINTF函数无法打印出浮点数内容是为什么?

    1、MCXN947低功耗adc,历程中使用官方提供的PRINTF无法打印出浮点数内容。 2、同样在mcuxpresso ide 也不可以打印浮点数,这是为什么呢? 3、使用的历程是lpadc历程。
    发表于 03-20 08:06

    设计了一个基于浮点数运算的协处理器,使用C语言编程时没法输入float型数据,请问有哪些部分需要修改?

    我设计了一个基于浮点数运算的协处理器,使用C语言编程时没法输入float型数据,请问有哪些部分需要修改?SDK,EXU_decoder浮点寄存器都需要修改吗,谢谢
    发表于 03-07 16:03

    labview数据类型与PLC 数据类型之间的转换(来自于写入浮点数到汇川 PLC中的数据转换关键的修改)

    本帖最后由 ironflag 于 2025-6-26 21:09 编辑 Labview通过Modbus库函数,写入浮点数到汇川PLC,正常操作如下: 1、将labview浮点数,强制转换
    发表于 02-24 19:01

    西门子TIA Portal如何比较两个浮点数相等

    概述: 由于浮点数的定义规则,导致浮点数不能通过二进制精确表示,所以在浮点数计算过程中,会出现两个值一样的浮点数进行比较相等计算时结果并不相等的情况。下面先设计一个实例说明该问题,并给
    的头像 发表于 01-06 10:07 1154次阅读
    西门子TIA Portal如何比较两个<b class='flag-5'>浮点数</b>相等

    ADS1282采集到的数据传到PC上应该怎么转为浮点数

    我最近在用ADS1282,采集到的数据传到PC上应该怎么转为浮点数?比如说通过串口调试助手收到一个采样点的数据为 FF FF 9D 17,它的真实浮点数是多少呢?我知道ADC是以补码形式存的,是要将数据倒转为17 9D FF FF,再与上0xFF,再float()吗?还
    发表于 12-13 06:23