2017-02-20 64 views
-1

無論當前狀態如何,我都希望能夠將特定位翻轉爲4位字。更具體地說,如果我有1111,我希望它更改爲0111.無論初始狀態如何,反轉位

1010將是0010.希望在沒有if語句的情況下執行此操作,最好在Python中執行此操作。

+2

顯示你已經嘗試過的情況,請 – eyllanesc

+4

提示:假設你想翻轉,XOR(^)是你最有可能想要的操作 – Foon

回答

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' 
相關問題