2010-04-02 18 views
9

C 'de bitwise AND (&) nasıl geri dönülür?Nasıl bitwise AND (&) cinsinden geri dönüş yapılır?

Örneğin böyle C bir işlem vardır:

((unsigned int)ptr & 0xff000000)) 

sonuç 0xbf000000 olup. Şu anda ihtiyaç duyduğum şey, yukarıdaki işlemin nasıl tersine çevrildiğidir, yani işlemin sonucu ve 0xff000000 nolu sonuçları kullanarak ptr'u belirleyecektir.

Bunu C içinde uygulamak için herhangi bir basit yol var mı?

cevap

22

Bit & geri alınamaz:

0 & 1 = 0 
0 & 0 = 0 
3

İmkansız. 0xff000000'ün & Bitwise'ı kayıplı bir işlemdir. Daha düşük 24 bitleri kalıcı olarak kaybedersiniz.

15

Sen (yani bit) bilgi atılır çünkü bunu yapamaz - Geri hiçbir yerden bilgi alamıyoruz. Her iki AND (&) ve OR (|) yıkıcı

not edin. Geri dönüşümlü olan tek Boole işlemleri XOR (^) ve NOT'tur (~).

1

Sadece yıkıcı olmadığından XOR'u tersine çevirebilirsiniz.

Hem VEYA hem de AND yıkıcıdır.

+5

"Yok" da tersine çevirebilirsiniz. –

+0

Evet ofc, benim fena fişim :-) – Steffen

İlgili konular