gpt4 book ai didi

c - PIC 的 16 位系统上的 32 位整数运算

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:56 25 4
gpt4 key购买 nike

我需要在 16 位系统上实现 32 位定点。我的编译器似乎给我一个“警告:表达式中的整数溢出”。我不确定我遗漏了什么 :S 。我将在下面提供我的代码的简化版本。任何建议将不胜感激:)

#include <stdint.h>
typedef int32_t Q22;

#define Q22base 512
#define Q22_Convert(_a) ((Q22)(_a*Q22base))

int main (){
// a bunch of code that does stuff goes here
Q22 variable1=0;

variable1 = Q22_Convert(some_value1) - Q22_Convert(some_value1);
return 0;
}

最佳答案

你的 Q22base 在 16 位 int 系统上是 16 位的,你需要将它转换为 Q22 所以你的 * 表达式至少以 32 位类型完成。

#define Q22_Convert(_a) ((Q22)(_a * (Q22) Q22base))

关于c - PIC 的 16 位系统上的 32 位整数运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com