2017-02-20 6 views
-1

Я хочу, чтобы иметь возможность переворачивать определенный бит в 4-битное слово независимо от его текущего состояния. Более конкретно, если у меня 1111, я хочу, чтобы он изменился на 0111.Инвертирующий бит независимо от начального состояния

1010 было бы 0010. Надеясь сделать это без инструкции if и желательно на Python.

+2

Показать, что вы испробовали пожалуйста – eyllanesc

+4

подсказка: если вы хотите, чтобы перевернуть, исключающая (^) является операцией, которую, скорее всего, хочет – Foon

ответ

2

Непонятно из вопроса, но инвертируйте бит XOR это с 1 (как предложено Foon's comment).

Так что, если вы хотите инвертировать только 4-й бит, вам нужно XOR с 0b1000, то есть 8. Только четвертый бит из 8 равен 1, а все остальные равны нулю, так что будут хранить другие биты, как они есть, только четвертый бит будет инвертирован.

>>> a = 0b0010 
>>> bin(a^8) 
'0b1010' 

Вы также можете превратить его в переменную, бит которой будет перевернут, перевернув ее влево. Таким образом, если п бит, мы хотим, чтобы инвертировать, затем:

>>> n = 4 
>>> a = 0b0010 
>>> bin(a^(1 << n - 1)) 
'0b1010' 
Смежные вопросы