C 根据嵌入式平台上使用的实际位限定输入操作的数据类型
通常,当有人开始在某个嵌入式平台上移植算法时,他/她必须计算出存储结果所需的位数,并对位数进行调整,确定最终的数据类型(8位/16位/32位)。这在嵌入式平台上非常重要 现在,我遇到了同样的情况。但这是我第一次尝试移植我的算法,但我不确定如何开始以下等式:C 根据嵌入式平台上使用的实际位限定输入操作的数据类型,c,algorithm,embedded,bit-manipulation,fixed-point,C,Algorithm,Embedded,Bit Manipulation,Fixed Point,通常,当有人开始在某个嵌入式平台上移植算法时,他/她必须计算出存储结果所需的位数,并对位数进行调整,确定最终的数据类型(8位/16位/32位)。这在嵌入式平台上非常重要 现在,我遇到了同样的情况。但这是我第一次尝试移植我的算法,但我不确定如何开始以下等式: NOTE: Here pixel values are from 0 to 255 values . ... uint32_t shift = 11; uint16_t val = some_val; uint8_t pos = ((ui
NOTE: Here pixel values are from 0 to 255 values .
...
uint32_t shift = 11;
uint16_t val = some_val;
uint8_t pos = ((uint8_t) (val>>(shift-7))) & 0x7f;
float t=(float)pos/(1<<7);
float res = (-1*t)*pixel[0] + (8-7*t)*pixel[1] + (7*t+1)*pixel[2] + (t-1)*pixel[3]/8 ;
我想了解,如何将上面的浮点方程表示为定点格式。意味着如果有人能够指导我至少第一次操作其手写定点格式的(8-7*t)*像素[1]
期望值:
例如:(8-7*t)*像素[1]
这里的像素值从0到255。表示8位
输入
数据类型
(8 - 7*t) = (8 - 7 * 0.002) = (8 - 0.014 ) = 7.986 ..
所以7可以用3位和分数位表示
我想知道这一点
我知道每个人都很忙,但是如果有人没有时间教我/指导我,或者给我提供一个链接,让我学会为这样的方程写手写的定点演讲,那就太好了。
我知道固定点和浮点格式,但我想知道如何使用最小位来表示固定点格式的方程
0.001
是否是t
可以拥有的最小值?t
可以拥有0.0到0.9
一般来说,要转换为定点,在应用除法之前需要对操作数进行乘法。例如,如果你需要4位数的分辨率,你可以乘以1000,然后除以,然后根据你最终得到的单位使用结果,用mA代替A或其他单位。从指定数据的预期值范围开始,然后相应地选择足够大的类型。@jailaxmikt
的最小增量是多少?而不是float t=(float)pos/(1)
(8 - 7*t) = (8 - 7 * 0.002) = (8 - 0.014 ) = 7.986 ..