小编Gdo*_*ogg的帖子

带无符号分子的带符号除法

我正在尝试计算滚动平均值,并试图获得并优化一点,我简化了计算,因此只有一个除法.当值减小时,存在当前值降低到小于平均值的点.此时平均跳跃.我想这是因为除法是无符号的,我的分子符号位被解释为一个大的无符号数.我只是不确定我需要在哪里投贴无符号以确保此问题不再出现.

unsigned int AverageUsage;
unsigned int TotalUsage;
unsigned int incCount;

    AverageUsage = (TotalUsage - AverageUsage)/++incCount + AverageUsage;
Run Code Online (Sandbox Code Playgroud)

AverageUsage将始终为正,但当TotalUsage低于AverageUsage时,我不确定该部门会有什么期望

    AverageUsage = (signed int)(TotalUsage - AverageUsage)/++incCount + AverageUsage;
Run Code Online (Sandbox Code Playgroud)

将分子设置为已签名,但我不确定如何进行除法.

    AverageUsage =  (signed int)((signed int)(TotalUsage - AverageUsage)/++incCount) + AverageUsage;
Run Code Online (Sandbox Code Playgroud)

应该工作(我可以保证这个完整操作的结果永远不会是负面的),但我担心incCount达到"看起来"负面的值的情况.

是否有一个简单的解决方案,希望:

  • 不需要if语句
  • 不需要QWORD

谢谢!

c embedded signed

7
推荐指数
2
解决办法
4677
查看次数

在ARM程序集中将立即值放在括号中的目的是什么?

subs    r2, r2, #(32)
Run Code Online (Sandbox Code Playgroud)

subs    r2, r2, #32
Run Code Online (Sandbox Code Playgroud)

如果你有一个来源我很乐意看到它,因为我找不到任何提及它.

谢谢!

assembly arm

3
推荐指数
1
解决办法
3420
查看次数

标签 统计

arm ×1

assembly ×1

c ×1

embedded ×1

signed ×1