在C中翻转数组元素符号的最快方法

时间:2017-04-25 12:39:30

标签: c arrays

我有一个维数为d的双精度数组a(这是2的幂,让我们说64到1024之间)。 现在我想以概率1/2翻转每个元素的符号(并记住已被翻转的位置!)。

我现在所做的是生成第二个双打b数组,只有1和-1,然后:

for (int i=0; i<d; i++) a[i] = a[i]*b[i];

我想知道是否有更快的方法可以做到这一点。我们技术上只需要1位来记忆1 / -1,我想我们可以避免乘法......但我不确定最好的方法是什么。

我尝试了以下内容:

for (int i=0; i<d; i++){
    if (b[i]<0)
        a[i]=-a[i];
}

避免乘法,但这并不快(实际上甚至稍慢)。

0 个答案:

没有答案