2010-04-02 19 views
9

Wie wird bitweises UND (&) in C umgekehrt?Wie umgekehrt bitweises UND (&) in C?

Zum Beispiel habe ich eine Operation in C wie folgt aus:

((unsigned int)ptr & 0xff000000)) 

Das Ergebnis 0xbf000000 ist. Was ich in diesem Moment brauche, ist, wie man das obige umkehrt, d. H. ptr bestimmt, indem man das Ergebnis der Operation und natürlich 0xff000000 verwendet.

Gibt es eine einfache Möglichkeit, dies in C zu implementieren?

Antwort

22

Bitwise & kann nicht rückgängig gemacht werden:

0 & 1 = 0 
0 & 0 = 0 
3

Unmöglich. Bitweise & von 0xff000000 ist eine verlustreiche Operation. Sie verlieren die unteren 24 Bit dauerhaft.

15

Sie können das nicht tun, weil Sie weg Informationen geworfen haben (das heißt Bits) - Sie keine Informationen zurück aus dem Nichts zu bekommen.

beachte, dass beide AND (&) und OR (|) destruktiv sind. Die einzigen booleschen Operationen, die reversibel sind, sind XOR (^) und NOT (~).

1

Sie können XOR nur umkehren, da es nicht-destruktiv ist.

Sowohl OR als auch AND sind destruktiv.

+5

Sie können "nicht" auch umkehren. –

+0

Yeah ofc, mein Schlechter ich lasse das rutschen :-) – Steffen

Verwandte Themen