找回密码
 立即注册
楼主: LAOXU

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

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 10:42:39 | 显示全部楼层
QQ6243*** 发表于 2024-1-18 09:57
你硬件那么牛有什么用,软件不支持用都不用考虑硬件问题,直接没硬件什么事 ...

这个本身就是软件(程序)模拟实现的
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 10:43:58 | 显示全部楼层
_奶*** 发表于 2024-1-18 09:30
建议别搞非标,,,移殖很麻烦,,

不考虑移植(也没必要移植),  本身 就是 51 专用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:338
  • 最近打卡:2025-05-01 00:00:50

4

主题

242

回帖

1287

积分

金牌会员

积分
1287
发表于 2024-1-18 15:26:48 | 显示全部楼层
就算能在keil c51上实现,估计也只能封装成函数调用,没办法用“+-*/”直接运算。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2025-04-22 20:38:33

0

主题

71

回帖

147

积分

注册会员

积分
147
发表于 2024-1-18 16:17:47 | 显示全部楼层
如果只是求精度可以考虑定浮点数,就是按整数存储,固定位置加上小数点

点评

这是一种方法, 只是动态范围太小, 定点浮点数, 只适合于 加减, 不适合于 乘除 及 超越函数运算. 而所占资源省不了多少, 因此, 除了特殊用途, 几乎没通用性.  详情 回复 发表于 2024-1-19 07:53
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-19 07:53:19 | 显示全部楼层
冷*** 发表于 2024-1-18 16:17
如果只是求精度可以考虑定浮点数,就是按整数存储,固定位置加上小数点

这是一种方法, 只是动态范围太小, 定点浮点数, 只适合于 加减, 不适合于 乘除 及 超越函数运算.

而所占资源省不了多少, 因此, 除了特殊用途, 几乎没通用性.  
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-26 08:10:29 | 显示全部楼层
最终考虑采用
方案1:
指数不变, 动态范围不变, 尾数增加 8位(1字节), 即尾数 24+8=32,
相当于有效值 9位十进制精度(达到 long 类型, 最大9位十进制精度, 速度快).
保持 和 原 C51单精度浮点数的高度兼容性, 为可重入函数.

方案2:
太占内存, 输入输出必须采用指针, 使用不方便.
回复 支持 反对

使用道具 举报 送花

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

54

主题

1327

回帖

5395

积分

荣誉版主

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

February 26, 201 ...

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 are too few available registers in C51, and it is almost impossible to develop a concise reentrant double precision floating-point function library.

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:53 , Processed in 0.122295 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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