【问题标题】:Algorithm to get (-2) based binary bits获取基于 (-2) 的二进制位的算法
【发布时间】:2017-01-08 21:24:23
【问题描述】:

我想知道为特定数字获取基于 (-2) 的二进制位的好算法。

所以让我定义基于 (-2) 的二进制位。 位是 1 或 0 的二进制元素数组。 此N 长度位A 表示的数字K 计算如下:

K = A[0] * (-2 ^ 0) + A[1] * (-2 ^ 1) + A[2] * (-2 ^ 2) + ... +  + A[N-1] * (-2 ^ (N-1))

例如,位 00011 代表数字 8 因为

1*(-2^4) + 1*(-2^3) + 0*(-2^2) + 0*(-2^1) + 0*(-2^0)

所以问题是当定义数字时,上面解释的计算最短位的好算法是什么。

【问题讨论】:

标签: algorithm math logic


【解决方案1】:

Wikipedia 展示了这种令人惊讶的方法:

unsigned int toNegaBinary(unsigned int value) // input in standard binary
{
    unsigned int Schroeppel2 = 0xAAAAAAAA; // = 2/3*((2*2)^16-1) = ...1010
    return (value + Schroeppel2) ^ Schroeppel2; // eXclusive OR
    // resulting unsigned int to be interpreted as string of elements ε {0,1} (bits)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 2021-09-12
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多