Вы можете использовать установленный объект :
target = ['apples', 'oranges']
fruits = ['apples', 'oranges', 'grapes', 'whatever']
set(fruits) - set(target)
#=> {'whatever', 'grapes'}
Учитывая i
, вы не можете вернуться 254
. Используя и
его, вы уничтожили данные, которые не были сохранены во втором бите.
1111 1110
&0000 0010
----------
0000 0010
Как бы вы восстановили 6 потерянных бит? Для x & 2 == 2
вы могли бы поставить практически любой x
, и это было бы верно.
0010 1010 // = 42
&0000 0010
----------
0000 0010
Это x
254 или 42? Вы не можете сказать.
Вы не можете, вы потеряли данные, которые были там, когда вы выполняли 4-битный пример &.
:
1110 & 0010 = 0010
У вас нет возможности узнать, какие биты были 1 и не было, если вы знаете только результат 0010 и второй операнд & (также 0010).
В Википедии есть хорошая статья о побитовых операциях, их работе и их синтаксисе в C и Java, которая очень похожа на C #
http://en.wikipedia.org/wiki/ Bitwise_operation
MSDN, конечно, также имеет документацию для каждого из побитовых и логических операторов, каждый из которых имеет пример:
http://msdn.microsoft.com/en-us/library/6a71f45d (vs.71) .aspx
Технически противоположность AND - это NAND:
~ (254 & 2)
Обратите внимание, что ~ является оператором дополнения и выполняет битовое НЕ (переключать каждый бит на свой напротив).
Что именно вы хотите? Чего вы пытаетесь достичь?
Если вы пытаетесь отменить вычисления, вы не можете - не существует обратной функции, такой, что inverseand (и (x, y)) вернет x или y, даже если обратный дан один из них.
-Адам
Что вы подразумеваете под противоположным вычислением?
Если вы видите число 254 как битовый регистр, состоящий из 8 битов, то все биты, кроме последнего, установлены в 1.
Вычисление 254 и 2 аналогичны проверке, установлен ли бит регистра 2. в регистре.
Что противоположно этому? Проверка, установлены ли все остальные биты?
Если целью операции &
является проверка, установлен ли бит 1, то потенциальной «противоположной» операцией является «установка бита 1».
т.е. :
val = val | 2;
Это перезаписывает текущее значение в бите 2 и не затрагивает другие биты.
Если 8 битов в байте считаются полностью независимыми, то можно изменить любой из них, коснувшись любого из других.
В этом случае не имеет значения, что часть исходной информации была потеряна. На самом деле нам все равно, какое значение имеют другие биты, и чаще всего при использовании битовых масок исходное значение рассматриваемого бита в любом случае было равно нулю.