Как инвертировать поразрядно И (и) в C?
Например, я переношу операцию в C как это:
((unsigned int)ptr & 0xff000000))
Результат 0xbf000000
. В чем я нуждаюсь, в данный момент то, как инвертировать вышеупомянутое, т.е. определить ptr
при помощи результата операции и конечно 0xff000000
.
Там какой-либо простой путь состоит в том, чтобы реализовать это в C?
Побитовые и
нельзя поменять местами:
0 & 1 = 0
0 & 0 = 0
Вы не можете этого сделать, потому что вы выбросили информацию (то есть биты) - вы можете ' не получить информацию из ниоткуда.
Обратите внимание, что и И
( &
), и ИЛИ
( |
) являются деструктивными. Обратимы только логические операции XOR
( ^
) и НЕ ( ~
).
Невозможно. Побитовое & 0xff000000 - операция с потерями. Вы теряете младшие 24 бита навсегда.
Вы можете только отменить операцию XOR, так как она неразрушающая.
И ИЛИ, и И являются деструктивными.