C中双变量数据类型的算术位移

Ver*_*ian 6 c math pointers matrix shift

我试图在C中算术移位双数据类型.我想知道这是否是正确的方法:

注意:firdelay [] []在main中声明为double firdelay [8] [12]

void function1(double firdelay[][12]) {
    int * shiftptr;

    // Cast address of element of 2D matrix (type double) to integer pointer
    *shiftptr = (int *) (&firdelay[0][5]); 

    // Dereference integer pointer and shift right by 12 bits
    *shiftptr >>= 12; 
}
Run Code Online (Sandbox Code Playgroud)

Pra*_*ian 6

按位移位浮点数据类型不会为您提供所需的结果.

在Simulink中,Shift算术块仅对整数数据类型进行位移.如果为其提供浮点类型,则将输入信号除以2^N其中N是在掩码对话框中指定的要移位的位数.

编辑:
由于您没有能力执行任何浮点数学运算,您的选项是:

  • 了解浮点单精度数的布局,然后弄清楚如何按位操作它来实现除法.
  • 将您正在移植的算法转换为使用定点数据类型而不是浮点数

我推荐选项2,它比1更容易