2011-08-14 11 views
91

मैं सी # करने के लिए नया हूँ और यह सच तालिका प्रदान करने के लिए XNOR ऑपरेटर नहीं पा सके:क्या सी # में एक्सएनओआर (लॉजिकल बाइकंडिशन) ऑपरेटर है?

 
a b a XNOR b 
---------------- 
T T  T 
T F  F 
F T  F 
F F  T 

वहाँ इस के लिए एक विशिष्ट ऑपरेटर है? या मुझे उपयोग करने की ज़रूरत है! (ए^बी)?

+66

इस ऑपरेटर और अधिक सामान्यतः के रूप में '==' के लिए बूलियन ऑपरेंड जाना जाता है ... –

+0

@Magnus हॉफ: अच्छा बहुत अच्छा बिंदु! – sll

+14

मुझे लगता है कि वाक्यांश "पेड़ों के लिए लकड़ी नहीं देख सकता" यहां अत्यधिक उपयुक्त है। वोटिंग अप क्योंकि हम सभी एक या दो बार यहां आए हैं;) – spender

उत्तर

169

एक्सएनओआर बूलियन पर समानता है; A == B का उपयोग करें।

यह याद करने में एक आसान बात है, क्योंकि समानता आमतौर पर बूलियन पर लागू नहीं होती है। और ऐसी भाषाएं हैं जहां यह आवश्यक रूप से काम नहीं करेगी। उदाहरण के लिए, सी में, किसी भी गैर-शून्य स्केलर मान को सत्य के रूप में माना जाता है, इसलिए दो "सत्य" मान असमान हो सकते हैं। लेकिन सवाल टैग किया गया था, जो हम कहते हैं, अच्छी तरह से व्यवहार बूलियन।

ध्यान दें कि यह बिटवाई ऑपरेशंस को सामान्यीकृत नहीं करता है, जहां आप 0x1234 XNOR 0x5678 == 0xFFFFBBB3 (32 बिट्स मानते हैं) चाहते हैं। इसके लिए, आपको ~(A^B) जैसे अन्य परिचालनों से निर्माण करने की आवश्यकता है। (नोट:। ~, नहीं !)

+33

बेशक यह है !! मुझे अब बेवकूफ लगता है -) – trailmax

+3

@trailmax: बेवकूफ महसूस करने की कोई ज़रूरत नहीं है, यह याद करने में एक आसान बात है। (उत्तर में शामिल टिप्पणियों को साफ करना।) –

+4

सी में, '!' ऑपरेटर का उपयोग 'int'' से "अच्छी तरह से व्यवहार" बूलियन को बदलने के लिए किया जा सकता है: '! A ==! B'। –

2

नहीं है, आप !(A^B)

उपयोग करने के लिए हालांकि मैं आप अपने खुद के XNOR बनाने के लिए अधिक भार ऑपरेटर इस्तेमाल कर सकते हैं लगता है की जरूरत है।

+1

यह थोड़ा सा है, तार्किक नहीं है – sll

+0

मुझे लगता है कि पोस्टर जानता है कि उसे अपने प्रश्न में शामिल किया गया है। – Griffin

+4

@ एसएलवीएल आपको लगभग मुझे मिला, मुझे इसे दोबारा जांचना पड़ा।सी #^में बूलियन पर संचालित होने पर तार्किक है। यदि अभिन्न प्रकारों पर संचालित होता है, तो यह थोड़ा सा है। कृपया http://msdn.microsoft.com/en-us/library/zkacc7k1.aspx – trailmax

4

XOR = ए या बी, लेकिन नहीं एक & बी या न (बराबर नहीं हो सकता [=!])
XNOR इसलिए सटीक oppoiste है, और आसानी से किया जा सकता है == या === द्वारा प्रतिनिधित्व किया गया।

हालांकि, गैर-बूलियन मामलों वर्तमान समस्याओं, इस उदाहरण की तरह:

a = 5 
b = 1 

if (a == b){ 
... 
} 
बजाय

, इस का उपयोग करें:

a = 5 
b = 1 

if((a && b) || (!a && !b)){ 
... 
} 

या

if(!(a || b) && (a && b)){ 
... 
} 

पहला उदाहरण वापस आ जाएगी झूठा (5! = 1), लेकिन दूसरा सच हो जाएगा (एक [मूल्य?] और बी [मूल्य?] के मान एक ही बुलियन लौटते हैं , सत्य (मान = नहीं 0/कोई मान है)

alt उदाहरण केवल उलट है (ए || ख) & &! (एक & & ख) (XOR) गेट

-3

आप XNOR के लिए === ऑपरेटर का उपयोग कर सकते हैं। बस आपको a और b को बूल में बदलने की आवश्यकता है।

if (!!a === !!b) {...} 
+0

केवल सी # में '===' ऑपरेटर – trailmax

+0

नहीं है, यह कोई भी जवाब सही नहीं है, '=== 'गैर-जबरदस्त ऑपरेटर जावास्क्रिप्ट है और मूल्यांकन में मान से पहले डबल' !! 'सी # या तो – Remi

+0

जैसा कि पहले से ही कहा गया है, सी # में ट्रिपल बराबर साइन ऑपरेटर नहीं है। – cramopy

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