Какова инверсия поразрядных И в C#?

Вы можете использовать установленный объект :

target = ['apples', 'oranges']
fruits = ['apples', 'oranges', 'grapes', 'whatever']

set(fruits) - set(target)
#=> {'whatever', 'grapes'}

6
задан Josh Lee 28 January 2010 в 10:10
поделиться

6 ответов

Учитывая i , вы не можете вернуться 254 . Используя и его, вы уничтожили данные, которые не были сохранены во втором бите.

 1111 1110
&0000 0010
----------
 0000 0010

Как бы вы восстановили 6 потерянных бит? Для x & 2 == 2 вы могли бы поставить практически любой x , и это было бы верно.

 0010 1010 // = 42
&0000 0010
----------
 0000 0010

Это x 254 или 42? Вы не можете сказать.

28
ответ дан 8 December 2019 в 02:04
поделиться

Вы не можете, вы потеряли данные, которые были там, когда вы выполняли 4-битный пример &.

:

1110 & 0010 = 0010

У вас нет возможности узнать, какие биты были 1 и не было, если вы знаете только результат 0010 и второй операнд & (также 0010).

3
ответ дан 8 December 2019 в 02:04
поделиться

В Википедии есть хорошая статья о побитовых операциях, их работе и их синтаксисе в C и Java, которая очень похожа на C #

http://en.wikipedia.org/wiki/ Bitwise_operation

MSDN, конечно, также имеет документацию для каждого из побитовых и логических операторов, каждый из которых имеет пример:

http://msdn.microsoft.com/en-us/library/6a71f45d (vs.71) .aspx

1
ответ дан 8 December 2019 в 02:04
поделиться

Технически противоположность AND - это NAND:

~ (254 & 2)

Обратите внимание, что ~ является оператором дополнения и выполняет битовое НЕ (переключать каждый бит на свой напротив).

Что именно вы хотите? Чего вы пытаетесь достичь?

Если вы пытаетесь отменить вычисления, вы не можете - не существует обратной функции, такой, что inverseand (и (x, y)) вернет x или y, даже если обратный дан один из них.

-Адам

22
ответ дан 8 December 2019 в 02:04
поделиться

Что вы подразумеваете под противоположным вычислением?

Если вы видите число 254 как битовый регистр, состоящий из 8 битов, то все биты, кроме последнего, установлены в 1.

Вычисление 254 и 2 аналогичны проверке, установлен ли бит регистра 2. в регистре.

Что противоположно этому? Проверка, установлены ли все остальные биты?

0
ответ дан 8 December 2019 в 02:04
поделиться

Если целью операции & является проверка, установлен ли бит 1, то потенциальной «противоположной» операцией является «установка бита 1».

т.е. :

val = val | 2;

Это перезаписывает текущее значение в бите 2 и не затрагивает другие биты.

Если 8 битов в байте считаются полностью независимыми, то можно изменить любой из них, коснувшись любого из других.

В этом случае не имеет значения, что часть исходной информации была потеряна. На самом деле нам все равно, какое значение имеют другие биты, и чаще всего при использовании битовых масок исходное значение рассматриваемого бита в любом случае было равно нулю.

0
ответ дан 8 December 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: