Как инвертировать поразрядно И (и) в C?

Как инвертировать поразрядно И (и) в C?

Например, я переношу операцию в C как это:

((unsigned int)ptr & 0xff000000))

Результат 0xbf000000. В чем я нуждаюсь, в данный момент то, как инвертировать вышеупомянутое, т.е. определить ptr при помощи результата операции и конечно 0xff000000.

Там какой-либо простой путь состоит в том, чтобы реализовать это в C?

11
задан Peter Mortensen 13 April 2010 в 15:36
поделиться

4 ответа

Побитовые и нельзя поменять местами:

0 & 1 = 0
0 & 0 = 0
24
ответ дан 3 December 2019 в 01:13
поделиться

Вы не можете этого сделать, потому что вы выбросили информацию (то есть биты) - вы можете ' не получить информацию из ниоткуда.

Обратите внимание, что и И ( & ), и ИЛИ ( | ) являются деструктивными. Обратимы только логические операции XOR ( ^ ) и НЕ ( ~ ).

16
ответ дан 3 December 2019 в 01:13
поделиться

Невозможно. Побитовое & 0xff000000 - операция с потерями. Вы теряете младшие 24 бита навсегда.

3
ответ дан 3 December 2019 в 01:13
поделиться

Вы можете только отменить операцию XOR, так как она неразрушающая.

И ИЛИ, и И являются деструктивными.

1
ответ дан 3 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

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