找回密码
 立即注册
查看: 1471|回复: 16

讨论一下, C51 的单精度浮点数, 实际应用中, 精度是否够???

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-17 17:10:57 | 显示全部楼层 |阅读模式
众多周知, 标准单精度浮点数, 尾数 24位, 相当于有效值 7位十进制精度.


标准双精度浮点数, 尾数 53位, 相当于有效值 15位十进制精度.




C251 可以自由选择 单精度 或 双精度浮点数.


而 C51 仅支持 单精度浮点数. 有效位数低于 long 类型(最大9位十进制精度).


是否有必要 在 C51 上, 搞个 准双精度(非标单精度)浮点数 ?


方案1: 指数不变, 动态范围不变, 尾数增加 8位, 即尾数 24+8=32, 相当于有效值 9位十进制精度(达到 long 类型, 最大9位十进制精度, 速度快).


方案2: 指数不变, 动态范围不变, 尾数增加 16位, 即尾数 24+16=40, 相当于有效值 12位十进制精度(超越 long 类型, 缺点, 比较占内存, 速度略慢).




计划这两个方案, 2选1, 优先在


采用 MDU32CSTC8H2K32USB-45I 上实现.






======================== 广  告 ========================


采用 MDU32C, PWM硬件移相的 STC8H2K32USB-45I-LQFP32/TSSOP28/TSSOP20


===在最后制图阶段,即将流片,春节后供货

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-01 20:16:58
已绑定手机

229

主题

328

回帖

1471

积分

金牌会员

积分
1471
发表于 2024-1-17 18:01:10 | 显示全部楼层
实现不了,keil c51最大数据只能是4个字节,这是硬件决定的

点评

keil c51最大数据只能是4个字节, 这是软件(C51) 限制的, 与硬件无关. 理论上, 51实现 double(float64)甚至 float128, 都是 100% 可行的 (只是速度特慢)  详情 回复 发表于 2024-1-18 02:27
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2024-1-17 18:47:47 | 显示全部楼层
没有必要搞非标准化的东西
有需要可以增加double(float64)甚至float128,这样两边都省事

点评

理论上是这样, 确实, 但 51芯片的 局限性, 软件模拟 double(float64)计算, 速度实在太慢了, float 计算, 精度又略显不足, 故想搞个 界于 两者之间的~~~  详情 回复 发表于 2024-1-18 02:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 02:27:07 | 显示全部楼层
QQ6243*** 发表于 2024-1-17 18:01
实现不了,keil c51最大数据只能是4个字节,这是硬件决定的

keil c51最大数据只能是4个字节, 这是软件(C51) 限制的, 与硬件无关.

理论上, 51实现 double(float64)甚至 float128, 都是 100% 可行的 (只是速度特慢)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 02:32:06 | 显示全部楼层
kk*** 发表于 2024-1-17 18:47
没有必要搞非标准化的东西
有需要可以增加double(float64)甚至float128,这样两边都省事 ...

理论上是这样, 确实,

但 51芯片的 局限性, 软件模拟 double(float64)计算, 速度实在太慢了,

float 计算, 精度又略显不足, 故想搞个 界于 两者之间的~~~

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-05-01 06:58:22

5

主题

184

回帖

1333

积分

金牌会员

积分
1333
发表于 2024-1-18 04:35:25 | 显示全部楼层
This info may help those wanting 64bit (8 byte) support, SDCC added that in 2018.

February 26, 2018 SDCC 3.7.0 Released
64-bit integers (long long) for the mcs51 and ds390 backends  (int64_t, uint64_t)

点评

Early single precision floating-point numbers in C51 were non reentrant (using simulation stacks), but later optimized to be reentrant (all other transcendental functions were non reentrant). There  详情 回复 发表于 2024-1-26 08:18
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-1-18 08:00:44 | 显示全部楼层
老许,兼顾SDCC, 这是 51世界的 天然盟友
===我们3个月后,会去发展 SDCC 支持我们强大的双数据指针
===为了我们STC8 强大的双数据指针, 我们会扛起 SDCC 发展的大旗


截图202401180759239381.jpg

【SDCC + VSCode】 本地下载 - SDCC, IAR C++ for STC8, GCC, VSCode,Linux, MacOS - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2024-1-18 08:16:35 | 显示全部楼层
下面有 IAR C++ for 8051 的头文件


截图202401180815525132.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-1-18 09:30:49 | 显示全部楼层
建议别搞非标,,,移殖很麻烦,,

点评

不考虑移植(也没必要移植), 本身 就是 51 专用  详情 回复 发表于 2024-1-18 10:43
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-01 20:16:58
已绑定手机

229

主题

328

回帖

1471

积分

金牌会员

积分
1471
发表于 2024-1-18 09:57:21 | 显示全部楼层
LAO*** 发表于 2024-1-18 02:27
keil c51最大数据只能是4个字节, 这是软件(C51) 限制的, 与硬件无关.

理论上, 51实现 double(float64) ...

你硬件那么牛有什么用,软件不支持用都不用考虑硬件问题,直接没硬件什么事

点评

这个本身就是软件(程序)模拟实现的  详情 回复 发表于 2024-1-18 10:42
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:47 , Processed in 0.124591 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表