Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将两字节映射实数相乘_C++_Multiplication - Fatal编程技术网

C++ 如何将两字节映射实数相乘

C++ 如何将两字节映射实数相乘,c++,multiplication,C++,Multiplication,我使用一个简单的uint8_t来存储介于0.0和1.0之间的实数值,其中0映射到0.0,255映射到1.0,线性插值介于两者之间 很明显,我可以用下面的程序乘以这个数: 除以它们/255.0f 将得到的浮点数相乘 将结果转换回uint8范围(uint8_t)(结果*255.0f) 但是,我想知道是否存在一种更简单的方法,可以在不涉及浮点转换的情况下产生相同的结果(即一些黑魔法位的篡改或移位) 任何帮助都将不胜感激 查看此线程,显示了几种不同的插值方法,“除以255”-答案正是我所需要的。完美

我使用一个简单的uint8_t来存储介于0.0和1.0之间的实数值,其中0映射到0.0,255映射到1.0,线性插值介于两者之间

很明显,我可以用下面的程序乘以这个数:

  • 除以它们/255.0f
  • 将得到的浮点数相乘
  • 将结果转换回uint8范围(uint8_t)(结果*255.0f)
但是,我想知道是否存在一种更简单的方法,可以在不涉及浮点转换的情况下产生相同的结果(即一些黑魔法位的篡改或移位)


任何帮助都将不胜感激

查看此线程,显示了几种不同的插值方法,“除以255”-答案正是我所需要的。完美的谢谢您的过程给出了类似于
(uint8_t)(((a/255.0f)*(b/255.0f))*255.0f)的代码
。可以重写
(uint8_t)(((a*b)/(255.0f*255.0f))*255.0f)
,然后
(uint8_t)((a*b*255.0f)/(255.0f*255.0f))
,它简化为
(uint8_t)((a*b)/255.0f)
,或者只使用整数乘法和除法(演员阵容仍然需要从
int
)转换回来。@BillAskaga我本来打算链接这一个,但决定整个线程值得一读:)