gpt4 book ai didi

c - 定点乘法

转载 作者:行者123 更新时间:2023-12-01 15:41:26 27 4
gpt4 key购买 nike

我需要根据一个非常量因子将一个值从一种单位转换为另一种单位。输入值范围从0到1073676289,范围值范围从0到1155625。转换可以这样描述:

output = input * (range / 1073676289)

我自己最初的定点实现感觉有点笨拙:

// Input values (examples)
unsigned int input = 536838144; // min 0, max 1073676289
unsigned int range = 1155625; // min 0, max 1155625

// Conversion
unsigned int tmp = (input >> 16) * ((range) >> 3u);
unsigned int output = (tmp / ((1073676289) >> 16u)) << 3u;

能否改进我的代码以使其更简单或更准确?

最佳答案

这将为您提供没有浮点值的最佳精度,结果将四舍五入为最接近的整数值:

output = (input * (long long) range + 536838144) / 1073676289;

关于c - 定点乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705343/

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