创建基本位翻转的算法

时间:2015-01-15 08:41:33

标签: python algorithm bit flip

def bit_flip(a):
    return ~a & 0xffffffff
t = (raw_input(""))
for i in range(0,t):
    a = t.split()
    a = bit(a)
    flip = bit_flip(a)
    print flip

它给我一个错误,上面写着:

File "solution.py", line 4, in <module>
for i in range(0,t):
TypeError: range() integer end argument expected, got str

此代码适用于此问题: 问题陈述

您将获得一个32位无符号整数的列表。您需要通过在其二进制表示中翻转位来输出您获得的无符号整数的列表(即必须设置未设置的位,并且必须取消设置位)。

示例输入

3 2147483647 1 0

示例输出

2147483648 4294967294 4294967295

2 个答案:

答案 0 :(得分:0)

你的for循环是混乱的部分。你应该把很多东西带到for循环之外。让我们检查一下你的代码:

t = (raw_input(""))

无需括号。

for i in range(0,t):

这没有任何意义。如果用户为"cat"输入了t该怎么办?从0转到"cat"会有意义吗?相反,带上这个:

    a = t.split()
    a = bit(a) #Should be int() not bit()

走出循环。 (另外,我们不能只说int(a)并希望列表中的所有项目都转换为int,我们需要map它。

这给了我们:

def bit_flip(a):
    return ~a & 0xffffffff

t = raw_input("")
a = map(int, t.split())
for i in a:
    print bit_flip(i)

答案 1 :(得分:0)

你可以使用

map(lambda x: x ^ 0xffffffff, a)