gpt4 book ai didi

c - C语言中双变量数据类型的算术位移位

转载 作者:太空狗 更新时间:2023-10-29 17:19:23 25 4
gpt4 key购买 nike

我正在尝试在 C 中对 double 数据类型进行算术位移。我想知道这是否是正确的方法:

注意:firdelay[ ][ ] 在 main 中声明为 双 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;
}

最佳答案

按位移动 float 据类型不会给您想要的结果。

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

编辑:
由于您没有执行任何 float 学运算的能力,您的选择是:

  • 了解 layout一个浮点单精度数,然后弄清楚如何按位操作它以实现除法。
  • 将您要移植的任何算法转换为使用定点数据类型而不是 float

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

关于c - C语言中双变量数据类型的算术位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015663/

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