首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PIC 16F18 -当与浮点数相乘时程序内存使用量过高

PIC 16F18 -当与浮点数相乘时程序内存使用量过高
EN

Stack Overflow用户
提问于 2019-11-28 23:08:00
回答 1查看 428关注 0票数 1

我有一个奇怪的问题。最好在附图中加以说明。我正在使用一个PIC 16F18323与MPLAB和XC8写在C中,程序内存只有2KB,所以我需要保持它尽可能低。问题是,当我尝试进行计算时,程序内存使用量会增加40%-50%。我所做的计算很简单:

代码语言:javascript
运行
复制
int blue;
int red;
blue = 4 * 1.5;

这是很好的,并占用了几乎零的内存,正如人们所预期的。但是,如果我再做一次类似的计算,就像这样:

代码语言:javascript
运行
复制
int blue = 4;
int red;
red = blue * 1.5;

如图所示,程序内存使用量跃升到40-50% .

提前谢谢。

图片较低的图像:高mem。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-28 23:19:00

16F18323没有浮点单元,这意味着它不能在本地执行浮点操作。因此,编译器必须在软件中模拟浮点操作,并且随后必须为单个浮点操作发出大量代码。

第一个操作涉及一个常量表达式,因此不涉及芯片上的浮点操作。

对于特定的示例,您可以考虑一种基于整数的方法:

代码语言:javascript
运行
复制
red = blue + (blue / 2);

或者(如果您的编译器没有生成有效的代码,以便按2的幂除法):

代码语言:javascript
运行
复制
red = blue + (blue >> 1);

注意,由于四舍五入,结果可能略有不同。另外,请注意,转换有符号类型(如您的int)是实现定义的;XC8编译器将有符号值的移位作为符号扩展的算术移位,这正是我们所希望的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59097032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档