যথাযথ ম্যানুয়াল লজিকাল এক্সওর বাস্তবায়ন নির্ভর করে আপনি আপনার এক্সওআর দিয়ে অন্যান্য লজিকাল অপারেটরগুলির ( ||
এবং &&
) এর সাধারণ আচরণকে কত ঘনিষ্ঠভাবে নকল করতে চান তার উপর নির্ভর করে । এই অপারেটরদের সম্পর্কে দুটি গুরুত্বপূর্ণ বিষয় রয়েছে: 1) তারা শর্ট সার্কিটের মূল্যায়নের গ্যারান্টি দেয়, 2) তারা একটি সিকোয়েন্স পয়েন্ট উপস্থাপন করে, 3) তারা কেবল তাদের অপারেশনগুলির মূল্যায়ন করে।
এক্সওআর মূল্যায়ন, যেমন আপনি বুঝতে পেরেছেন, সংক্ষিপ্ত-প্রচারিত হতে পারে না কারণ ফলাফল সর্বদা উভয় সংস্থার উপর নির্ভর করে। সুতরাং 1 প্রশ্নের বাইরে। তবে কি 2? আপনি যদি 2 এর বিষয়ে চিন্তা না করেন তবে সাধারণকরণ (অর্থাত bool
) মানগুলির সাথে অপারেটর !=
ফলাফলের ক্ষেত্রে XOR এর কাজ করে। এবং অপারেশনগুলি সহজেই আনরির সাথে স্বাভাবিক করা যায় !
, যদি প্রয়োজন হয়। এইভাবে !A != !B
সেই ক্ষেত্রে যথাযথ XOR প্রয়োগ করে।
তবে আপনি যদি অতিরিক্ত সিকোয়েন্স পয়েন্টটির বিষয়ে যত্নশীল হন তবে !=
এক্সওআর ^
বাস্তবায়নের সঠিক উপায় নয় বা বিটওয়াইজও নয় । XOR (ক, খ) সঠিকভাবে করার একটি সম্ভাব্য উপায় নিম্নরূপ দেখতে পারে
a ? !b : b
এটি আসলে যেমন ঘনিষ্ঠ হিসাবে আপনি একটি সাদাসিধা XOR যাও থেকে "অনুরূপ" উপার্জন পেতে পারেন হয় ||
এবং &&
। এটি কেবলমাত্র কাজ করবে, যদি আপনি নিজের ম্যাক্রো হিসাবে এক্সওআর বাস্তবায়ন করেন। ক্রিয়াকলাপটি ফাংশনের যুক্তিগুলিতে প্রযোজ্য হবে না বলে কোনও ফাংশন করবে না।
যদিও কেউ বলতে পারেন যে, প্রত্যেকের ক্রম বিন্দু থাকার একমাত্র কারণ &&
এবং ||
সংক্ষিপ্ত-সার্কিট মূল্যায়ন সমর্থন করা, এবং এইভাবে এক্সওর এর প্রয়োজন হয় না। এটি আসলে বোঝায়। তবুও, মাঝখানে একটি সিকোয়েন্স পয়েন্ট সহ একটি এক্সওআর রাখার বিষয়টি বিবেচনাযোগ্য। উদাহরণস্বরূপ, নিম্নলিখিত এক্সপ্রেশন
++x > 1 && x < 5
সি / সি ++ (কমপক্ষে সিকোয়েন্সিংয়ের ক্ষেত্রে) এর আচরণ এবং নির্দিষ্ট ফলাফল নির্ধারণ করেছে। সুতরাং, কেউ যুক্তিযুক্ত হিসাবে ব্যবহারকারী হিসাবে সংজ্ঞায়িত লজিকাল এক্সওআর থেকে একই আশা করতে পারে
XOR(++x > 1, x < 5)
যদিও !=
ভিত্তিক এক্সওরটির এই সম্পত্তি নেই।