我希望能够将特定位翻转为4位字,而不管其当前状态如何。更具体地说,如果我有1111,我希望它改为0111。
1010将是0010.希望在没有if语句的情况下执行此操作,最好使用Python。
答案 0 :(得分:2)
问题不是很清楚,但要稍微反转一下将其与1 进行异或(如Foon's comment所示)。
因此,如果你想只反转第4位,你需要与0b1000
进行异或,即8。只有8的第4位是1而所有其他位都是0,所以这将保留其他位是的,只有第四位会被反转。
>>> a = 0b0010
>>> bin(a ^ 8)
'0b1010'
你也可以把它变成一个变量,通过向左移位一个位来翻转这个位。因此,如果n是我们想要反转的位,那么:
>>> n = 4
>>> a = 0b0010
>>> bin(a ^ (1 << n - 1))
'0b1010'