找回密码
 立即注册
楼主: LA***

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

[复制链接]
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    37

    主题

    870

    回帖

    3960

    积分

    荣誉版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    37

    主题

    870

    回帖

    3960

    积分

    荣誉版主

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

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

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 17:53
  • 签到天数: 118 天

    [LV.6]常住居民II

    3

    主题

    204

    回帖

    562

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    慵懒
    4 天前
  • 签到天数: 93 天

    [LV.6]常住居民II

    0

    主题

    77

    回帖

    186

    积分

    注册会员

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

    点评

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    37

    主题

    870

    回帖

    3960

    积分

    荣誉版主

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    37

    主题

    870

    回帖

    3960

    积分

    荣誉版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    37

    主题

    870

    回帖

    3960

    积分

    荣誉版主

    积分
    3960
     楼主| 发表于 2024-1-26 08:18:30 | 显示全部楼层
    jmg 发表于 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, 2024-5-2 11:05 , Processed in 0.078022 second(s), 55 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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