打印
[51单片机]

51单片机带符号数运算的算法,求推荐

[复制链接]
3972|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2013-7-25 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C8051的单片机,数据量不大,大概上百个,存在一个数组里,不过都是带符号数,也需要数码管显示出来。
所以之前我都是把数据放大,用整数存储,自己在每个数的最高位标记符号位。
现在需要对这些数据进行处理,比如,几十上百个带符号的数相加,有没有什么便利的实现方式?
都强制转换为浮点数,直接相加就可以了??
用的Keil C编程。

相关帖子

沙发
wh6ic| | 2013-7-25 17:58 | 只看该作者
放大倍数如果是一样,就可以直接相加。符号位就需要自己软件处理。

使用特权

评论回复
板凳
popeye021|  楼主 | 2013-7-25 19:24 | 只看该作者
wh6ic 发表于 2013-7-25 17:58
放大倍数如果是一样,就可以直接相加。符号位就需要自己软件处理。

对符号位用软件处理,我想到的方法是:用if语句判断,然后转向不同公式计算。只为了确定计算公式中的一个加减号。
还有更简洁的方式嘛?

使用特权

评论回复
地板
ayb_ice| | 2013-7-26 08:39 | 只看该作者
关键最终的和有没有超过long的范围,如果没有可以直接相加

如果有超过,同时又想方便必须用浮点数,但可以先加10个或者20个再转成浮点数,这样可以提高效率,同时仍然很方便,

否则只能自己处理了

使用特权

评论回复
5
coody| | 2013-7-26 10:59 | 只看该作者
用C语言的话,直接加减乘除就可以了,不需要转浮点,那样会很慢的。
注意溢出的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

455

帖子

4

粉丝