gpt4 book ai didi

c - 在定点计算中使用小数部分

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

我有一个计算如下:

1472 / 48 = 30.666667
(30 * 48) = 1440
(0.666667 * 48) = 32

所以我需要的数字是1440和32,可以用第一次计算的实部和小数部分计算出来。使用以下代码,我找到了实数部分,但小数部分是按比例计算的。

#define SHIFT_AMOUNT    16
// 2 bytes is used to map divisions
#define SCALE_FACTOR 65535 // (2^16)
#define SHIFT_MASK ((1 << SHIFT_AMOUNT) - 1)

uint32_t total_msgs = DATA_LENGTH << SHIFT_AMOUNT;
total_msgs /= PAYLOAD_SIZE;

uint8_t real_part = total_msgs >> SHIFT_AMOUNT; // 30
uint32_t decimal_part = total_msgs & SHIFT_MASK; // 43690

现在进行最后一次计算,我卡住了。我如何从 43690 中得到 32(实际上是 ((43690/65535) = 0.666667)?

最佳答案

解决这个问题的常用方法是%操作符:

quotient = DATA_LENGTH / PAYLOAD_SIZE;
fraction = DATA_LENGTH % PAYLOAD_SIZE;

关于c - 在定点计算中使用小数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43726046/

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