基本位翻转算法
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 的补码转换为无符号整数。
所以我是编程新手。在 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 的补码转换为无符号整数。