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