基本位翻转算法

basic bit flip algorithm

所以我是编程新手。在 python 上了一门基础课程,所以我知道基础知识,我正在努力练习更多,我正在尝试这个问题,但我不知道从哪里开始。

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

输入的第一行包含列表大小 T。T 行之后的每一行都有一个来自列表的整数。

约束条件

1≤T≤100

输出格式

使用请求的结果从列表中为每个元素输出一行。

样本输入

3 2147483647 1个 0

示例输出

2147483648 4294967294 4294967295

说明

以1为例,因为无符号32位是000000000000000000000000000000001,然后翻转我们得到11111111111111111111111111111110,它又是4294967294

可以用按位异或运算符来完成,即^ in Python。

示例:

a = 0xF0101010
b = 0xFFFFFFFF
print(bin(a))
print(bin(b))
print(bin(a ^ b))

0b11110000000100000001000000010000
0b11111111111111111111111111111111
0b1111111011111110111111101111
foreach x in input:
    x_flipped = ~x & 0xffffffff
    print "bits flipped in unsigned 32-bit", bin(x_flipped)

解释: - (~x) 翻转所有位 ~ (& 0xffffffff) 将 2 的补码转换为无符号整数。