讨论一下, C51 的单精度浮点数, 实际应用中, 精度是否够???
众多周知, 标准单精度浮点数, 尾数 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, 优先在
采用 MDU32C 的 STC8H2K32USB-45I 上实现.
======================== 广告 ========================
采用 MDU32C, PWM硬件移相的 STC8H2K32USB-45I-LQFP32/TSSOP28/TSSOP20
===在最后制图阶段,即将流片,春节后供货
实现不了,keil c51最大数据只能是4个字节,这是硬件决定的 没有必要搞非标准化的东西
有需要可以增加double(float64)甚至float128,这样两边都省事 QQ624353765 发表于 2024-1-17 18:01
实现不了,keil c51最大数据只能是4个字节,这是硬件决定的
keil c51最大数据只能是4个字节, 这是软件(C51) 限制的, 与硬件无关.
理论上, 51实现 double(float64)甚至 float128, 都是 100% 可行的 (只是速度特慢) kksk 发表于 2024-1-17 18:47
没有必要搞非标准化的东西
有需要可以增加double(float64)甚至float128,这样两边都省事 ...
理论上是这样, 确实,
但 51芯片的 局限性, 软件模拟 double(float64)计算, 速度实在太慢了,
float 计算, 精度又略显不足, 故想搞个 界于 两者之间的~~~
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)
老许,兼顾下 SDCC, 这是 51世界的 天然盟友
===我们3个月后,会去发展 SDCC 支持我们强大的双数据指针
===为了我们STC8 强大的双数据指针, 我们会扛起 SDCC 发展的大旗
【SDCC + VSCode】 本地下载 - SDCC, IAR C++ for STC8, GCC, VSCode,Linux, MacOS - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
下面有 IAR C++ for 8051 的头文件
建议别搞非标,,,移殖很麻烦,, LAOXU 发表于 2024-1-18 02:27
keil c51最大数据只能是4个字节, 这是软件(C51) 限制的, 与硬件无关.
理论上, 51实现 double(float64) ...
你硬件那么牛有什么用,软件不支持用都不用考虑硬件问题,直接没硬件什么事
页:
[1]
2