-1
無論當前狀態如何,我都希望能夠將特定位翻轉爲4位字。更具體地說,如果我有1111,我希望它更改爲0111.無論初始狀態如何,反轉位
1010將是0010.希望在沒有if語句的情況下執行此操作,最好在Python中執行此操作。
無論當前狀態如何,我都希望能夠將特定位翻轉爲4位字。更具體地說,如果我有1111,我希望它更改爲0111.無論初始狀態如何,反轉位
1010將是0010.希望在沒有if語句的情況下執行此操作,最好在Python中執行此操作。
這個問題並不十分清楚,但是要反轉一點,你用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'
顯示你已經嘗試過的情況,請 – eyllanesc
提示:假設你想翻轉,XOR(^)是你最有可能想要的操作 – Foon