সি # তে কি এক্সএনওআর (লজিকাল বাইকন্ডিশনাল) অপারেটর রয়েছে?


136

আমি সি # তে নতুন এবং এই সত্যের ছকটি সরবরাহ করার জন্য এক্সএনওআর অপারেটরকে খুঁজে পাইনি :

আবা XNOR খ
----------------
ttt
TFF
FTF
FFT

এর জন্য কি কোনও নির্দিষ্ট অপারেটর রয়েছে? বা আমার ব্যবহার করা দরকার! (A ^ B)?


94
এই অপারেটরটি সাধারণত ==বুলিয়ান অপারেন্ডস হিসাবে পরিচিত ...
ম্যাগনাস হফ

@ ম্যাগনাস হফ: খুব সুন্দর পয়েন্ট!
SLL

24
আমি মনে করি "গাছের জন্য কাঠ দেখতে পাচ্ছেন না" এই বাক্যাংশটি এখানে অত্যন্ত উপযুক্ত। ভোট প্রদান কারণ আমরা সকলেই এখানে একবার বা দু'বার এসেছি;)
ব্যয়কারী

1
হতে পারে যে ওপ iz l33t কে! ডি যারা দুর্দান্ত শেলকোডেজ লিখতে চায় এবং কোনওভাবে তুলনা ক্রিয়াকলাপটি লুকিয়ে রাখতে চায়। এটি একটি সম্ভাবনা ...
কেরেরেক এসবি

4
দুঃখিত, কেরেক, আমি সেই ভিড় থেকে নেই এবং
ব্যয়কারী

উত্তর:


250

এক্সএনওআর হ'ল বুলিয়ানগুলির সমানতা; ব্যবহারA == B

এটি সহজেই মিস করা জিনিস, যেহেতু সমানতা সাধারণত বুলিয়ানগুলিতে প্রয়োগ হয় না। এবং এমন ভাষা রয়েছে যেখানে এটি অগত্যা কাজ করবে না। উদাহরণস্বরূপ, সি-তে, কোনও শূন্য-স্কেলারের মানকে সত্য হিসাবে বিবেচনা করা হয়, সুতরাং দুটি "সত্য" মান অসম হতে পারে। তবে প্রশ্নটি ট্যাগ করা হয়েছিলযা আছে, আমরা কি বলব, ভাল আচরণ করা বুলিয়ান।

এছাড়াও খেয়াল করুন যে এটি যেখানে আপনি চান 0x1234 XNOR 0x5678 == 0xFFFFBBB3(32 বিট ধরে) বিটওয়াইজ অপারেশনগুলিতে সাধারণীকরণ করে না । তার জন্য, আপনাকে অন্যান্য অপারেশনগুলি থেকে তৈরি করা দরকার, যেমন ~(A^B)। (দ্রষ্টব্য: ~না !।)


6
সি, !অপারেটর রূপান্তর করতে ব্যবহার করা যেতে পারে int' "ভালভাবে ব্যবহার করেছেন" Booleans থেকে S: !a==!b
ivan_pozdeev

2
@ivan_pozdeev এবং !!(এটি দুটি যৌক্তিক "অপারেটর নয়") 0বা তে কোনও স্কেলারের মানকে স্বাভাবিক করে তোলে 1
কিথ থম্পসন

5

XOR = A বা B, তবে A & B বা উভয়ই নয় (সমান হতে পারে না [! =])
XNOR হ'ল সঠিক বিরোধী, এবং সহজেই == বা === দ্বারা প্রতিনিধিত্ব করা যেতে পারে।

যাইহোক, নন-বুলিয়ান ক্ষেত্রে সমস্যাগুলি উপস্থিত হয়, উদাহরণস্বরূপ:

a = 5
b = 1

if (a == b){
...
}

পরিবর্তে, এটি ব্যবহার করুন:

a = 5
b = 1

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

অথবা

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

প্রথম উদাহরণটি মিথ্যা (5! = 1) ফেরত দেবে, তবে দ্বিতীয়টি সত্য (একটি [মান?] এবং খ [মান?] এর মানগুলি একই বুলিয়ান ফিরে আসবে, সত্য (মান = 0 নয় / মান নেই) )

উদাহরণস্বরূপ, কেবল বিপরীত (একটি || খ) &&! (একটি এবং বি) (এক্সওআর) গেট


3

না, আপনার ব্যবহার করা দরকার !(A^B)

যদিও আমি মনে করি আপনি নিজের এক্সএনওআর তৈরি করতে অপারেটর ওভারলোডিং ব্যবহার করতে পারেন।


1
এই, bitwise, না একটি যৌক্তিক
SLL

আমি মনে করি পোস্টারটি এটি নিজের প্রশ্নের সাথে অন্তর্ভুক্ত করার সাথে জানে।
গ্রিফিন

4
@ স্লভ আপনি প্রায় আমাকে পেয়েছেন, আমি এটি ডাবল চেক করতে হবে। বুলিয়ানতে চালিত হলে সি # In এ যৌক্তিক। যদি অবিচ্ছেদ্য ধরনেরগুলিতে পরিচালিত হয় তবে এটি কিছুটা দিকের। দয়া করে দেখুন msdn.microsoft.com/en-us/library/zkacc7k1.aspx
trailmax

@ ট্রিলম্যাক্স: দুর্দান্ত জিনিস, এটি দেখানোর জন্য ধন্যবাদ! সত্যিই শয়তান বিস্তারিত হয়!
SLL

-6

আপনি ===এক্সএনওআর এর জন্য অপারেটর ব্যবহার করতে পারেন । শুধু আপনাকে রূপান্তর করতে হবে aএবং bবুল করতে হবে।

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

1
কেবল সি # এর ===অপারেটর নেই
ট্রিলম্যাক্স

এই উত্তরটির ===কোনওটিই সঠিক নয়, অ-বাধ্যকারী অপারেটরটি জাভাস্ক্রিপ্ট এবং !!মূল্যায়নের আগে একটি দ্বিগুণ হওয়ার আগে
রেমি

যেমনটি ইতিমধ্যে বলা হয়েছে, সি # এর ট্রিপল সমান চিহ্ন অপারেটর নেই।
ক্রোমপি

=== সি # তে অপারেটর নয় ... (===) ব্যবহৃত হয় জাভাস্ক্রিপ্ট।
ডার্ককডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.