इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दी गई संख्या N की समता (Parity) ज्ञात करता है।
समता को किसी संख्या के बाइनरी प्रतिनिधित्व में सेट बिट्स की संख्या ( '1' की संख्या) के रूप में परिभाषित किया गया है।
यदि बाइनरी प्रतिनिधित्व में '1' की संख्या सम है, तो समता को सम समता कहा जाता है और यदि बाइनरी प्रतिनिधित्व में '1' की संख्या विषम है, तो समता को विषम समता कहा जाता है।
यदि दी गई संख्या N है, तो हम निम्नलिखित ऑपरेशन कर सकते हैं।
- y = N ^ (N >> 1)
- y = y ^ (y >> 2)
- y = y ^ (y >> 4)
- y = y ^ (y >> 8)
- y = y ^ (y >> 16)
एक बार ये सभी ऑपरेशन हो जाने के बाद, y में सबसे दायां बिट संख्या की समता को दर्शाएगा। यदि बिट 1 है, तो समता विषम होगी और यदि बिट 0 होगी, तो समता सम होगी।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool calc_parity(int N) {
int y;
y = N ^ (N >> 1);
y = y ^ (y >> 2);
y = y ^ (y >> 4);
y = y ^ (y >> 8);
y = y ^ (y >> 16);
// सबसे दाएं बिट की जांच
if (y & 1)
return 1;
return 0;
}
int main() {
int n = 1345;
int result = calc_parity(n);
if(result == 1)
cout << "Odd Parity" << endl;
else
cout << "Even Parity" << endl;
return 0;
}
आउटपुट
Even Parity