Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_Algorithm_Embedded_Bit Manipulation_Fixed Point - Fatal编程技术网

C 根据嵌入式平台上使用的实际位限定输入操作的数据类型

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

通常,当有人开始在某个嵌入式平台上移植算法时,他/她必须计算出存储结果所需的位数,并对位数进行调整,确定最终的数据类型(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 = ((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或其他单位。从指定数据的预期值范围开始,然后相应地选择足够大的类型。@jailaxmik
t
的最小增量是多少?而不是
float t=(float)pos/(1)
(8 - 7*t) =  (8 - 7 * 0.002) = (8 - 0.014 ) = 7.986 ..