最短位序列逻辑

时间:2013-05-21 07:30:18

标签: algorithm bit

我试图了解最短位序列的工作原理。我的意思是逻辑。我需要为它创建一个程序,但实际上并不知道这个最短的位序列是什么。我试图google但是徒劳无功。我在SO Question遇到了这个问题,但是我无法理解它。任何人都可以向我解释或指导我在哪里可以理解这背后的逻辑吗?

2 个答案:

答案 0 :(得分:2)

正如Jan Dvorak在评论中指出的那样,它只是一个用-2编写的数字。

考虑您的示例[0, 1, 1, 1, 1, 1, 1]

-2的指数与2相同,但的符号交替显示

(-2)^0 =   1
(-2)^1 =  -2
(-2)^2 =   4
(-2)^3 =  -8
(-2)^4 =  16
(-2)^5 = -32
(-2)^6 =  64
 ...

在比特序列表示法中,最低指数首先出现,即与普通二进制数相比,顺序颠倒过来。

[0, 1, 1, 1, 1, 1, 1] = 0 * (-2)^0  +
                        1 * (-2)^1  +
                        1 * (-2)^2  +
                        1 * (-2)^3  +
                        1 * (-2)^4  +
                        1 * (-2)^5  +
                        1 * (-2)^6

给出(从下往上)

[0, 1, 1, 1, 1, 1, 1] = 64 - 32 + 16 - 8 + 4 - 2 = 42

答案 1 :(得分:-1)

def solution(A):
    n=len(A)
    result=0
    if n==0:
        return -1
    for i in range(n):
        result+=(A[i]*pow(-2,i))
    return result
print solution([1,0,0,1,1])