2010-04-02 8 views
9

सी में उल्टा कैसे करें और() सी में कैसे?बिट में उल्टा और (&) सी कैसे करें?

उदाहरण के लिए मैं इस तरह सी में एक ऑपरेशन है:

((unsigned int)ptr & 0xff000000)) 

परिणाम 0xbf000000 है। मुझे इस पल में क्या चाहिए, उपर्युक्त को कैसे उलटना है, यानी ऑपरेशन और परिणाम 0xff000000 के परिणाम का उपयोग करके ptr निर्धारित करें।

क्या सी में इसे लागू करने का कोई आसान तरीका है?

उत्तर

22

बिटवाइस & उलटा नहीं जा सकता:

0 & 1 = 0 
0 & 0 = 0 
3

असंभव। 0x0xff000000 का एक हानिकारक ऑपरेशन है। आप कम 24-बिट्स को स्थायी रूप से खो देते हैं।

15

आपको लगता है कि क्योंकि आप (अर्थात बिट्स) जानकारी फेंक दिया है ऐसा नहीं कर सकते हैं - आप नहीं जानकारी कहीं से वापस मिल सकता है।

ध्यान दें कि AND (&) और OR (|) विनाशकारी हैं। एकमात्र बूलियन ऑपरेशंस जो रिवर्सिबल हैं XOR (^) और नहीं (~)।

1

आप केवल एक्सओआर को उलट सकते हैं, क्योंकि यह विनाशकारी है।

दोनों OR और AND विनाशकारी हैं।

+5

आप "नहीं" भी उलट सकते हैं। –

+0

हाँ ओह, मेरे बुरे मैंने उस पर्ची को छोड़ दिया :-) – Steffen

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^